unittest 命令行界面

2022-08-02 09:37 更新

可以在命令行中使用 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 支持以下命令行選項:

-b, ?--buffer

標準輸出和標準錯誤流在測試運行期間被緩沖。通過測試期間的輸出將被丟棄。輸出在測試失敗或錯誤時正?;仫@,并添加到失敗消息中。

-c ,--catch

?測試運行期間的 ?Control-C? 等待當前測試結束,然后報告到目前為止的所有結果。第二個? Control-C ?引發(fā)正常的 ?KeyboardInterrupt ?異常。

有關提供此功能的函數,請參閱信號處理。

-f ,--failfast

在第一個錯誤或失敗時停止測試運行。

-k

僅運行與模式或子字符串匹配的測試方法和類。此選項可以多次使用,在這種情況下,所有匹配任何給定模式的測試用例都包括在內。

包含通配符 (?*?) 的模式使用 ?fnmatch.fnmatchcase()? 與測試名稱匹配;否則使用簡單的區(qū)分大小寫的子字符串匹配。

模式與測試加載程序導入的完全限定的測試方法名稱進行匹配。

例如,?-k foo? 匹配 ?foo_tests.SomeTest.test_something?、?bar_tests.SomeTest.test_foo?,但不匹配? bar_tests.FooTest.test_something?。

--locals

在回溯中顯示局部變量。

版本 3.2 中的新功能: 添加了命令行選項 -b,?-c?和-f。
版本 3.5 中的新功能:--locals
 命令行選項 。
版本 3.7 中的新功能: ?-k?命令行選項 。

命令行也可用于測試發(fā)現、運行項目中的所有測試或僅運行子集。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號