pytest 失敗測試用例,自動重跑的方法總結

2021-09-25 06:41:24 字數 2817 閱讀 8930

pytest功能

支援引數化

簡單的單元測試

複雜的功能測試

介面測試:pytest+requests

具有很多第三方外掛程式,並且可以自定義擴充套件

pytest-selenium(整合selenium)

pytest-html(完美html測試報告生成)

pytest-rerunfailures(失敗case重複執行)

pytest生成測試報告,參考:

環境搭建

# 先安裝依賴

pip install py colorama

# 依次安裝

pip install -u pytest

pip install -u pytest-html

pip install -u pytest-rerunfailures

失敗自動重跑引數:–lf

–if引數(last fail):執行上次執行失敗的測試用例,如果沒有失敗用例則執行全部測試用例。

使用方式:在執行函式或命令列中傳入引數: --lf 即可。

荔枝:我們的測試用例正常寫即可,其中第二條用例是會執行失敗的;在程式的入**們顯示通過pytest.main()方法正常執行了一次測試,然後又通過pytest.main()執行了上次測試失敗的用例。

#檔名是test_firstfile.py

#coding=utf-8

import pytest

@pytest.fixture()

def myfixture():

print("執行myfixture")

class test_pytest():

def test_one(self):

print("test_one方法執行" )

assert 1==1

def test_two(self):

print("test_two方法執行" )

assert "s" in "love"

def test_three(self,myfixture):

print("test_three方法執行" )

assert 3-1==2

if __name__=="__main__":

pytest.main(['-s','test_firstfile.py'])

pytest.main(['-s','--lf','test_firstfile.py'])

執行結果如下圖:我們可以看到第一執行測試中我們的第二個用例失敗了;第二次只執行了第二個測試用例。

引數:–ff

–ff引數(fail first):執行所有的測試用例,上次執行失敗的用例優先執行。

使用方式:在執行函式或命令列中傳入引數: --ff 即可。

荔枝:測試用例部分和上面的一樣,便不再展示。

if __name__=="__main__":

pytest.main(['-s','test_firstfile.py'])

pytest.main(['-s','--ff','test_firstfile.py'])

執行結果如下圖:可以看到第一次執行我們的第二條用例執行失敗了;第二次執行先是執行了第二條測試用例,隨後執行了其他用例。需要注意的我們韌體也隨著執行了一遍。

批處理命令實現自動重跑

我們上面演示的是在**中實現測試的執行以及重跑,當然我們也可以通過命令列的方式執行測試(這裡以–lf為例)。

開啟cmd~

第一條命令:正常執行測試用例。當然你可以根據需求傳入其他引數,不只是 -s。

pytest -s c:\users\administrator\pycharmprojects\firstpython\testpytest\test_firstfile.py

1第二條命令:執行上一次執行失敗的用例。

pytest -s --lf c:\users\administrator\pycharmprojects\firstpython\testpytest\test_firstfile.py

1結果圖:

為了方便執行,我們可以將上面兩個命令放在.bat檔案中,這樣雙擊即可。

新建 starttest.bat檔案,內容如下:前兩條命令使我們剛剛學習的兩條命令,你可以根據需求新增一些引數,我們這裡將兩個測試結果分別以html形式放在d盤下;我們在每個命令前都新增了call 命令,在bat中用來在乙個批處理指令碼中呼叫另外乙個批處理指令碼;在最後我們加了pause,在bat中用來執行結束後不自動關閉cmd視窗。

call pytest -s --html=d:\report1.html c:\users\administrator\pycharmprojects\firstpython\testpytest\test_firstfile.py

call pytest -s --html=d:\report2.html --lf c:\users\administrator\pycharmprojects\firstpython\testpytest\test_firstfile.py

pause

雙擊完成的bat指令碼,執行完成後會發現d盤**現了兩個測試報告。

--------------------- 

原文: 

pytest失敗重跑

平常在做功能測試的時候,經常會遇到某個模組不穩定,偶然會出現一些bug,對於這種問題我們會針對此用例反覆執行多次,最終復現出問題來。自動化執行用例時候,也會出現偶然的bug,可以針對單個用例,或者針對某個模組的用例重複執行多次。pytest自帶失敗重跑機制,在執行中傳入引數即可。lf 引數 執行上次...

pytest實現測試用例引數化

本文總www.cppcns.com結pytest的測試用例引數化。軟體測試中,輸入相應值,檢查期望值,是常見測試方法。在自動化測試中,乙個測試用例對應乙個測試點,通常一組測試資料無法完全覆蓋測試範圍,所以,需要引數化來傳遞多組資料。pytest的測試用例引數化使用如下裝飾器即可完成。pytest.m...

PYTEST中對測試用例標記執行

標記三種方式 1 顯式指定函式名,通過 標記 pytest test.py test012 模糊查詢,使用 k標識 pytest k test test.py3 使用pytest.mark在函式上標記 建立pytest.ini檔案 注意縮排 pytest markers do do undo und...