unittest單元測試框架最初受JUnit啟發,與其他語言的主要單元測試框架具有相似的風格。 它支持測試自動化,支持開啟或關閉某個測試,支持結合測試。另外它可以生成各個單元測試的報告。為了實現以上功能,unitTest提供了四大功能:
測試夾具(test fixture)
測試夾具起自動初始化、回收資源作用。以類為對象的話,在python里對應的方法分別是test_isupper、test_upper,前者可以起初始化作用,后者可以起回收資源作用。
測試用例(test case)
測試用例是單獨的測試單元。unittest提供了一個基類TestCase,可用於創建新的測試用例。
測試套件(test suite)
測試套件用於將一個個的測試用例結合起來。
測試運行器(test runner)
測試運行器會提供給用戶測試的結果,可以以圖形界面、文本界面等形式返回。
例子解析
總體上unittest提供了一組豐富的工具,供給用戶構建與測試。本小節用一個簡單的例子和大家演示一下,首先代碼如下:
import unittest class TestStringMethods(unittest.TestCase): def test_upper(self): print("test_upper") def test_isupper(self): print("test_isupper") def test_split(self): print("test_split") if __name__ == '__main__': unittest.main()
1:首先我們執行下代碼,可以看到如圖:
2: 該類繼承unittest.TestCase類,可以看出,里面有三個function,分別為test_upper、test_isupper、test_split,其中的test_isupper相當於類的構造操作,test_upper相當於類的析構操作,而默認的test_xxx后的函數則是單元測試對應的函數,默認會按照代碼的順序依次執行.
3:我們添加一個函數test_split1,代碼如圖:
def test_split(self): print("test_split") def test_split1(self): print("test_split1")
運行結果如圖:
4:講好基礎的,我們講關於命令行編譯運行的內容,首先我們拷貝test1.py並生成test2.py。若想要同時編譯運行test1.py與test2.py,又或者我們想編譯運行整個文件夾的unittest模塊代碼,再或者我們只想編譯運行某個py文件下的某個function,這該怎么辦呢?詳細請看下方。
①:python -m unittest test1 test2——這里指的是按順序執行test1.py test2.py文件中的unittest模塊。
②:python -m test1.TestStringMethods——這里指的是執行test1.py文件中名為TestStringMethods的unittest類。
③:python -m unittest test1.TestStringMethods.test_split——這里指的是只執行test1.py文件中名為TestStringMethods的unittest類的test_split函數。
④:python -m unittest——這里指的是編譯該層目錄下繼承unittest模塊的所有py文件。
⑤:python -m unittest discover——等同於python -m Unittest,后還要接參數時要加discover。
⑥:python -m unittest discover -s dest_Dir -p "*.py"——編譯目標dir目錄下繼承unittest模塊的所有py文件,其中-s 后接對應文件夾,-p 后接匹配模式。
如果想讓執行結果更為明顯,可以加上 -v;若想獲取其他參數的用法,可以加上 -h。