unittest在命令行中執行


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' 、把分隔符轉換為 '.' 轉換為模塊名。若你需要執行不能被作為模塊導入的測試文件,你需要直接執行該測試文件。

在運行測試時,你可以通過添加 -v 參數獲取更詳細(更多的冗余)的信息。

python -m unittest -v test_module

當運行時不包含參數,開始 探索性測試

python -m unittest

用於獲取命令行選項列表:

python -m unittest -h

在 3.2 版更改: 在早期版本中,只支持運行獨立的測試方法,而不支持模塊和類。

命令行選項:

-b, --buffer

在測試運行時,標准輸出流與標准錯誤流會被放入緩沖區。成功的測試的運行時輸出會被丟棄;測試不通過時,測試運行中的輸出會正常顯示,錯誤會被加入到測試失敗信息。

-c, --catch
當測試正在運行時, Control-C 會等待當前測試完成,並在完成后報告已執行的測試的結果。當再次按下 Control-C 時,引發平常的 KeyboardInterrupt 異常。

See Signal Handling for the functions that provide this functionality.

-f, --failfast
當出現第一個錯誤或者失敗時,停止運行測試。

-k
只運行匹配模式或子串的測試方法和類。可以多次使用這個選項,以便包含匹配子串的所有測試用例。

包含通配符(*)的模式使用 fnmatch.fnmatchcase() 對測試名稱進行匹配。另外,該匹配是大小寫敏感的。

模式對測試加載器導入的測試方法全名進行匹配。

例如,-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 。

命令行亦可用於探索性測試,以運行一個項目的所有測試或其子集。

探索性測試
3.2 新版功能.

Unittest支持簡單的測試搜索。若需要使用探索性測試,所有的測試文件必須是 modules 或 packages (包括 namespace packages )並可從項目根目錄導入(即它們的文件名必須是有效的 identifiers )。

探索性測試在 TestLoader.discover() 中實現,但也可以通過命令行使用。它在命令行中的基本用法如下:

cd project_directory
python -m unittest discover

注解 方便起見, python -m unittest 與 python -m unittest discover 等價。如果你需要向探索性測試傳入參數,必須顯式地使用 discover 子命令。

discover 有以下選項:

-v, --verbose
更詳細地輸出結果。

-s, --start-directory directory
開始進行搜索的目錄(默認值為當前目錄 . )。

-p, --pattern pattern
用於匹配測試文件的模式(默認為 test*.py )。

python3 -m unittest discover -s cases/screen_recorder_test_cases/screen_cases/ -p "*001*.py"

-t, --top-level-directory directory
指定項目的最上層目錄(通常為開始時所在目錄)。

-s ,-p 和 -t 選項可以按順序作為位置參數傳入。以下兩條命令是等價的:

python -m unittest discover -s project_directory -p "*_test.py"
python -m unittest discover project_directory "*_test.py"

正如可以傳入路徑那樣,傳入一個包名作為起始目錄也是可行的,如 myproject.subpackage.test 。你提供的包名會被導入,它在文件系統中的位置會被作為起始目錄。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM