Pytest之自定義mark
一個完整的專案,測試用例比較多,比如我們想將某些用例用來做冒煙測試,那該怎麼辦呢?pytest中可以自定義配置檔案,用例按照指定的方式去執行。
配置檔案
定義配置檔名
在專案根目錄下,建立一個檔案:pytest.ini
(固定名稱,不要修改)。
配置檔案格式
pytest.ini
[pytest] markers = demo: just for demo smoke
① 案例一:
之前在講解用例被標記為@pytest.mark.xfail
時,如果用例執行通過,顯示XPASS。
test_demo.py
@pytest.mark.xfail() def test_demo02(): print("這是test_demo02") assert 1 == 1
在配置檔案中未配置xfail_strict = True
時,執行結果如下:
在pytest.ini 中加上xfail_strict = True配置後
執行結果為:
② 案例二:addopts
addopts引數可以更改預設命令列選項,省去手動敲命令列引數。
比如命令列想輸出詳細資訊、分散式執行或最大失敗次數,每次敲命令很麻煩,在配置裡設定,以後命令直接輸入pytest即可。
現有如下用例:
test_demo.py
def test_demo01(): print("這是test_demo01") assert 1 == 2 def test_demo02(): print("這是test_demo02")
如果需要輸出資訊更詳細、輸出除錯資訊及用例執行錯誤時立即退出,那麼配置如下:
[pytest] markers = demo: just for demo smoke addopts = -v -s -x
命令列輸入:pytest
輸出結果為:
測試用例執行實戰
比如我想從眾多用例中挑選出部分用例,作為冒煙測試用例,怎麼配置呢?
pytest.ini
[pytest] markers = demo: just for demo smoke
其中smoke為標籤,用例前加上標籤名smoke,即都屬於冒煙測試用例。
模組級別
在模組里加上標籤,那麼該模組下的類、方法或函式都會帶上標籤。
test_demo.py
import pytest pytestmark = pytest.mark.smoke class TestDemo: def test_demo01(self): print("這是test_demo01") def test_demo02(self): print("這是test_demo02") def test_demo03(self): print("這是test_demo03")
命令列輸入:pytest -v -m smoke
。
輸出結果為:
類級別
在類上新增標籤,則類下的所有方法都帶上標籤
test_demo.py
import pytest @pytest.mark.smoke class TestDemo: def test_demo01(self): print("這是test_demo01") def test_demo02(self): print("這是test_demo02") def test_demo03(self): print("這是test_demo03") def test_demo04(): print("這是test_demo04")
在命令列輸入:pytest -v -m smoke test_demo.py
函式級別
在函式上新增標籤,那麼此函式帶上標籤。
test_demo.py
import pytest class TestDemo: def test_demo01(self): print("這是test_demo01") def test_demo02(self): print("這是test_demo02") def test_demo03(self): print("這是test_demo03") @pytest.mark.smoke def test_demo04(): print("這是test_demo04")
命令列輸入:pytest -v -m smoke test_demo.py
輸出結果為: