1. 程式人生 > 其它 >Pytest 失敗重執行

Pytest 失敗重執行

需安裝第三方外掛:pytest-rerun、pytest-rerunfailures

失敗重試和失敗重執行的區別

失敗重試:【--reruns=1】,用例執行失敗後,會立即開始重試一次此用例,再執行下一條用例

失敗重執行:【--if】 ,用例集或用例執行完成之後,再次pytest.main(),會收集失敗的用例,再次執行;如果沒有失敗的用例,會執行全部

  一個run檔案,可以同時寫多條pytest.main(),執行pytest的命令

if __name__=="__main__":
    pytest.main(['-s','test_firstFile.py'])   -- 第一次執行,如果有失敗的用例/第一次沒有失敗的用例
    pytest.main(['-s','--lf','test_firstFile.py']) – 收集到第一次失敗的用例,進行執行/則執行全部

需注意,如果用例數較多,第一次執行全部成功的情況,第二個pytest.main(),是會收集所有的用例再執行一遍。

建議使用失敗重試次數(--reruns=1),失敗一次後,立刻執行一次,也可減少用例的失敗率

失敗重試方式

1、可在命令列 –reruns=1 reruns_delay=2 失敗後重執行1次,延時2s

2、使用裝飾器進行失敗重執行

@pytest.mark.flaky(reruns=1, reruns_delay=2)

命令列引數和裝飾器同時存在

說明:如果用例裝飾器方式設定了重新執行次數,則在命令列新增–reruns對這些用例不會生效;裝飾器的優先順序>命令列

  • 這個外掛不可以和 class, module, package 級別的fixture裝飾器一起使用,不能與@pyest.mark.usefixtures()一起使用
  • 這個外掛與 pytest-xdist 的 --looponfail 標誌不相容
  • 這個外掛與核心 --pdb 標誌不相容

總結

pytest-rerunfailures外掛可以通過命令列引數 --reruns 2 --reruns-delay 5 進行使用,這個對於所有用例生效

pytest-rerunfailures外掛使用裝飾器裝飾在用例上面,只對裝飾的用例有效

當時同時使用裝飾器和命令列引數時,裝飾器引數優先順序高

注意外掛的相容性

原文連結:https://blog.csdn.net/u010454117/article/details/118584670