Python
如何使用兼容python2和python3版本的六模組遷移程式碼
我想提供六個來兼容我在 python2 和 python3 版本中的程式碼。我從網上得到了這個例子,但沒有得到更多的資源來得到網上的六個例子。在下面的程式碼中,我不明白為什麼他們為測試案例創建了類並寫了這一行
class SampleTests(unittest.TestCase):
在 main 裡面,他們是怎麼稱呼這個班級的
SampleTests
?以及如何unittest.main()
在 main 內部呼叫類?請幫助我。如果可能的話,請給出一些六個模組遷移的範例。
import six from six.moves import reduce import unittest def multiply_values(val1, val2): return val1*val2 def add_values(val1, val2): return val1+val2 class SampleTests(unittest.TestCase): def test_sets_equal(self): setValue1 = reduce(multiply_values, [1,2]) setValue2 = reduce(add_values, [1,2]) six.assertCountEqual(self, [2,3], [setValue1,setValue2]) if __name__ == '__main__': unittest.main()
在您的範例
six
中用於兩件事:
reduce
在 Python 3 中被刪除並替換為functools.reduce
sosix
為它提供了一個方便的“別名”,因此您可以同時呼叫reduce
2 和 3。assertCountEqual
是 Python 3 中 unittest 的一部分,所以six
這裡提供了它自己的 Python 2 實現。該
six
模組的最佳文件可在此處獲得:https ://six.readthedocs.io/注意:Python 2 現在已棄用,您不應該將它用於新項目。
six
將幫助您編寫適用於兩個版本的 Python 的程式碼,但如果您沒有充分的理由支持 Python 2,最好編寫僅 Python 3 的程式碼。2to3 工具可以幫助您將 Python 2 程式碼轉換為 Python 3。為什麼他們為測試案例創建類並編寫了這一行 class SampleTests(unittest.TestCase): 和 Inside main,他們如何呼叫類 SampleTests
這不是真正
six
的具體問題,這是unittest
模組在 Python 2 和 3 上的工作方式,有關詳細資訊,請參閱https://docs.python.org/3/library/unittest.html。TL;DR 版本:
unittest.main()
將自動執行文件中的所有測試案例,並且測試案例被定義為test_
在類中名稱以開頭的函式unittest.TestCase
。