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