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

posted on 2022-05-26 13:37  刚刚好1  阅读(687)  评论(0编辑  收藏  举报

导航