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   刚刚好1  阅读(698)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示