可以在命令行中使用 unittest 模塊從模塊、類甚至單個(gè)測試方法運(yùn)行測試:
python -m unittest test_module1 test_module2
python -m unittest test_module.TestClass
python -m unittest test_module.TestClass.test_method
您可以傳入包含模塊名稱和完全限定類或方法名稱的任意組合的列表。
測試模塊也可以通過文件路徑指定:
python -m unittest tests/test_something.py
這允許您使用 shell 文件名完成來指定測試模塊。指定的文件仍必須可作為模塊導(dǎo)入。通過刪除“.py”并將路徑分隔符轉(zhuǎn)換為“.”,將路徑轉(zhuǎn)換為模塊名稱。如果要執(zhí)行不可作為模塊導(dǎo)入的測試文件,則應(yīng)直接執(zhí)行該文件。
您可以通過傳入 ?-v
? 選項(xiàng)來運(yùn)行具有更多詳細(xì)信息(更詳細(xì))的測試:
python -m unittest -v test_module
在沒有參數(shù)的情況下執(zhí)行時(shí),將啟動(dòng)測試發(fā)現(xiàn):
python -m unittest
有關(guān)所有命令行選項(xiàng)的列表:
python -m unittest -h
版本3.2中的更改: 在早期版本中,只能運(yùn)行單獨(dú)的測試方法,而不能運(yùn)行模塊或類。
unittest 支持以下命令行選項(xiàng):
-b
, ?--buffer
標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤流在測試運(yùn)行期間被緩沖。通過測試期間的輸出將被丟棄。輸出在測試失敗或錯(cuò)誤時(shí)正?;仫@,并添加到失敗消息中。
-c
,--catch
?測試運(yùn)行期間的 ?Control-C
? 等待當(dāng)前測試結(jié)束,然后報(bào)告到目前為止的所有結(jié)果。第二個(gè)? Control-C
?引發(fā)正常的 ?KeyboardInterrupt
?異常。
有關(guān)提供此功能的函數(shù),請參閱信號(hào)處理。
-k
僅運(yùn)行與模式或子字符串匹配的測試方法和類。此選項(xiàng)可以多次使用,在這種情況下,所有匹配任何給定模式的測試用例都包括在內(nèi)。
包含通配符 (?*
?) 的模式使用 ?fnmatch.fnmatchcase()
? 與測試名稱匹配;否則使用簡單的區(qū)分大小寫的子字符串匹配。
模式與測試加載程序?qū)氲耐耆薅ǖ臏y試方法名稱進(jìn)行匹配。
例如,?-k foo
? 匹配 ?foo_tests.SomeTest.test_something
?、?bar_tests.SomeTest.test_foo
?,但不匹配? bar_tests.FooTest.test_something
?。
版本 3.2 中的新功能: 添加了命令行選項(xiàng)-b
,?-c
?和-f
。
版本 3.5 中的新功能:--locals
命令行選項(xiàng) 。
版本 3.7 中的新功能: ?-k
?命令行選項(xiàng) 。
命令行也可用于測試發(fā)現(xiàn)、運(yùn)行項(xiàng)目中的所有測試或僅運(yùn)行子集。
更多建議: