1. 程式人生 > 其它 >pytest(15):配置檔案pytest.ini

pytest(15):配置檔案pytest.ini

前言

pytest配置檔案可以改變pytest的執行方式,它是一個固定的檔案pytest.ini檔案,讀取配置資訊,按指定的方式去執行。

ini配置檔案

pytest裡面有些檔案是非test檔案

  • pytest.ini pytest的主配置檔案,可以改變pytest的預設行為
  • conftest.py 測試用例的一些fixture配置
  • _init_.py 識別該資料夾為python的package包

ini基本格式

# 儲存為pytest.ini檔案

[pytest]

addopts = -rsxX

xfail_strict = true

解釋

addopts

addopts引數可以更改預設命令列選項,這個當我們在cmd輸入指令去執行用例的時候,會用到,比如我想測試完生成報告,指令比較長

pytest -v --reruns 1 --html=report.html --self-contained-html

每次輸入這麼多,不太好記住,於是可以加到pytest.ini裡

# pytest.ini
[pytest]

markers =
webtest: Run the webtest case
hello: Run the hello case

xfail_strict = true

addopts = -v --reruns 1 --html=report.html --self-contained-html

這樣我下次開啟cmd,直接輸入pytest,它就能預設帶上這些引數了

xfail_strict

設定xfail_strict = true可以讓那些標記為@pytest.mark.xfail但實際通過的測試用例被報告為失敗

什麼叫標記為@pytest.mark.xfail但實際通過,這個比較繞腦,看以下案例

def test_hello():
print("hello world!")
assert 1

@pytest.mark.xfail()
def test_yoyo1():
a = "hello"
b = "hello world"
assert a == b

@pytest.mark.xfail()
def test_yoyo2():
a = "hello"
b = "hello world"
assert a != b

if __name__ == "__main__":
pytest.main(["-v", "test_xpass.py"])

測試結果

test_yoyo1和test_yoyo2這2個用例一個是a == b一個是a != b,兩個都標記失敗了,我們希望兩個用例不用執行全部顯示xfail。實際上最後一個卻顯示xpass.為了讓兩個都顯示xfail,那就加個配置
xfail_strict = true

修改ini檔案

[pytest]
markers =
webtest: Run the webtest case
hello: Run the hello case
xfail_strict = true

再次執行,結果就變成

這樣標記為xpass的就被強制性變成failed的結果

修改匹配規則

pytest預設查詢用例匹配規則

  • 測試檔案以test_開頭(以_test結尾也可以)
  • 測試類以Test開頭,並且不能帶有init方法
  • 測試函式以test_開頭

如果我們想匹配以c_*.py的檔案,pytest.ini檔案放到專案的根目錄。

在pytest.ini檔案新增一項python_files即可。

修改ini檔案

[pytest]
markers =
webtest: Run the webtest case
hello: Run the hello case
xfail_strict = true
python_files=*.py

匹配測試用例類和方法相關配置參考如下多個匹配規則中間用空格隔開

python_files=*.py
python_classes=Test_*
python_functions=test_* *

配置檔案如何放

一般一個工程下方一個pytest.ini檔案(不要瞎jb拍腦袋亂命名,瞎jb命名是找不到的)就可以了,放到頂層資料夾下