可以在命令行中使用 unittest 模塊從模塊、類甚至單個測試方法運行測試:
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 文件名完成來指定測試模塊。指定的文件仍必須可作為模塊導入。通過刪除“.py”并將路徑分隔符轉換為“.”,將路徑轉換為模塊名稱。如果要執(zhí)行不可作為模塊導入的測試文件,則應直接執(zhí)行該文件。
您可以通過傳入 ?-v
? 選項來運行具有更多詳細信息(更詳細)的測試:
python -m unittest -v test_module
在沒有參數的情況下執(zhí)行時,將啟動測試發(fā)現:
python -m unittest
有關所有命令行選項的列表:
python -m unittest -h
版本3.2中的更改: 在早期版本中,只能運行單獨的測試方法,而不能運行模塊或類。
unittest 支持以下命令行選項:
-c
,--catch
?測試運行期間的 ?Control-C
? 等待當前測試結束,然后報告到目前為止的所有結果。第二個? Control-C
?引發(fā)正常的 ?KeyboardInterrupt
?異常。
有關提供此功能的函數,請參閱信號處理。
-k
僅運行與模式或子字符串匹配的測試方法和類。此選項可以多次使用,在這種情況下,所有匹配任何給定模式的測試用例都包括在內。
包含通配符 (?*
?) 的模式使用 ?fnmatch.fnmatchcase()
? 與測試名稱匹配;否則使用簡單的區(qū)分大小寫的子字符串匹配。
模式與測試加載程序導入的完全限定的測試方法名稱進行匹配。
例如,?-k foo
? 匹配 ?foo_tests.SomeTest.test_something
?、?bar_tests.SomeTest.test_foo
?,但不匹配? bar_tests.FooTest.test_something
?。
版本 3.2 中的新功能: 添加了命令行選項-b
,?-c
?和-f
。
版本 3.5 中的新功能:--locals
命令行選項 。
版本 3.7 中的新功能: ?-k
?命令行選項 。
命令行也可用于測試發(fā)現、運行項目中的所有測試或僅運行子集。
更多建議: