pytest中文文檔:https://learning-pytest.readthedocs.io/zh/latest/doc/intro/getting-started.html
一. 命名規範
用例編寫規範
測試檔案:test_開頭 或者_test結尾
測試函數:test_開頭
測試類:Test開頭,并且不能包含_init_方法
測試方法:test_開頭
測試包:所有的包Package必須要有__init__.py檔案
二. 運作
-
pycharm運作
File->Settings->Tools->Python integrated Tools-> Testing選項中預設test runner選擇pytest ->應用
配置完成之後,符合規則的測試用例都能拿被識别出來并且會顯示出一個三角形的執行按鈕,點選這個按鈕也能執行某個方法或者某個類。
-
指令行運作
指令行進入到需要執行測試檔案所在的路徑,使用
指令運作,pytest會找目前目錄以及遞歸查找子目錄下所有符合命名規則的函數,類以及方法并執行,當做測試用例并且執行。pytest
三. 運作參數
pytest提供很多參數,可以使用
pytest --help
來檢視幫助文檔
常見的幾種參數:
指令 | 說明 |
---|---|
pytest | 查找目前目錄及其子目錄下test_.py或_test.py檔案,在檔案中找到符合命名規則的函數,類以及方法并執行 |
pytest -v 檔案名.py | 列印詳細的運作日志資訊 |
pytest -s 檔案名.py | 控制台輸出結果 |
pytest -v -s 檔案名.py | 帶控制台輸出詳細結果 |
pytest -q 檔案名.py | 列印簡略的運作日志資訊 |
pytest -x 檔案名.py | 一旦運作到報錯,就停止運作 |
pytest 檔案夾/ | 執行指定的檔案夾 |
pytest -k “類名” | 執行子產品中測試包含關鍵字的類 |
pytest -k “方法名” | 執行子產品中測試用例名包含關鍵字的方法 |
pytest -k “類名 and not 方法名1” | 執行包含”類名“關鍵字檔案中的所有方法,但是包含”方法名1“關鍵字的方法不執行 |
pytest -m [标記名] | 使用@pytest.mark.[标記名] 将運作有這個标記的測試用例 |
pytest --maxfial=[num] | 當運作錯誤達到num的時候就停止運作 |
pytest --collect-only | 隻收集測試用例,不執行 |
pytest --junitxml=./result.xml | 生成執行結果檔案 |
pytest --setup-show | 回溯fixture的執行過程 |
四. 運作模式
pytest提供多重運作模式,可以指定某個子產品,執行單獨一個pytest子產品。
-
pytest 檔案名.py
執行一個單獨的python檔案
-
pytest 檔案名.py::類名
運作某個子產品裡面的某個類
-
pytest 檔案名.py::類名::方法名
運作某個子產品裡面的某個類的某個方法
五. pytest架構結構
執行測試用例前後會執行setup,teardown來完成用例的前後和後置條件。按照用例運作級别可以分為以下幾類:
- 子產品級:setup_module/teardown_module ,在子產品始末執行,全局的(優先級最高)
- 函數級:setup_function/teardown_function,隻對函數用例生效(在類外部)
- 類級:setup_class/teardown_class,隻在類的前後運作一次(在類中)
- 方法級:setup_method/teardown_method,開始于方法的始末(在類中)
-
方法級:setup/teardown, 運作在調用方法前後(在類中)
調用順序:子產品>類>方法
setup_module>setup_class>setup_method>setup>teardown>teardown_method>teardown_class>teardown_module