pytest 運行命令


1. 第一個(或N個)測試失敗后停止

在第一個(N)次失敗后停止測試過程:

pytest -x  # 遇到第一個失敗時,停止
pytest --maxfail==2  # 遇到第二個失敗時,停止

2.指定測試或選擇測試

Pytest支持從命令行運行和選擇測試的幾種方法。

  • 在模塊中運行測試
pytest test_mod.py 
  • 在目錄中運行測試
pytest testing/

目錄級運行,即指定運行某一目錄下所有測試集(以test_ 開頭或者_test結尾的方法或者文件)方式
  • 通過關鍵字表達式運行測試
pytest -k "MyClass and not method" 

注意:執行當前目錄下,名字包含MyClass但不包含method的測試用例,所以上面的示例將運行,TestMyClass.test_something 但不會運行TestMyClass.test_method_simple。

  • 按節點ID運行測試

每個收集的測試都分配有一個唯一的nodeid名稱,該名稱由模塊文件名后跟說明符(例如類名,函數名和參數化參數)組成,並用::字符分隔。

要在模塊中運行特定的測試,請執行以下操作:

pytest test_file::test_case

test_file,為.py文件

test_case, 為test_file.py中的一個測試用例

在命令行中指定測試方法的另一個示例:命令格式:pytest 文件名.py::測試類::測試方法

pytest test_mod.py::
TestSuite
::test_case
test_case,為TestSuite的成員函數
  • 通過標記表達式運行測試
pytest -m slow 
  • 從包運行測試
    • pytest --pyargs pkg.testing
    • 這將導入pkg.testing並使用其文件系統位置來查找並運行測試

3.從Python代碼中調用pytest

pytest.main(["-x", "mytestdir"])

注意:調用pytest.main()將導致導入您的測試及其導入的任何模塊。由於python導入系統的緩存機制,pytest.main()從同一進程進行后續調用不會反映兩次調用之間對這些文件的更改。因此,pytest.main()不建議從同一進程進行多次調用(例如,以重新運行測試)。

 

4.修改Python回溯打印

pytest --showlocals # 打印本地變量
pytest -l           # 打印本地變量

pytest --tb=auto    # 默認模式                 
pytest --tb=long    # 盡可能詳細的輸出
pytest --tb=short   # 更簡短的輸出
pytest --tb=line    # 每個失敗信息總結在一行中
pytest --tb=native  # Python 標准輸出
pytest --tb=no      # 不打印失敗信息

--full-trace是一種比--tb=long更詳細的輸出模式。它甚至能觀察到用戶打斷執行(Ctrl+C)時的回溯信息,而上述六種模式默認是不輸出此類信息的。

5.分析測試執行持續時間

要獲取最慢的10個測試持續時間的列表:

pytest --durations=10 

默認情況下,除非-vv在命令行中傳遞,否則pytest不會顯示太短的測試持續時間(<0.01s)

6.獲取版本,選項名稱,環境變量

pytest --version   # 獲取版本
pytest --fixtures  # 顯示可用的內置函數參數
pytest -h | --help # 幫助

7.通過python -m pytest調用pytest

可以從命令行通過Python解釋器調用測試:

python -m pytest [...]
但是,這和直接執行pytest [...]命令的效果幾乎是一模一樣


免責聲明!

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



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