pytest失败重跑 -- pytest-rerunfailures插件(unittest失败重跑)

网友投稿 459 2022-09-01


pytest失败重跑 -- pytest-rerunfailures插件(unittest失败重跑)

pytest大保健系列

一、前言​​

在进行自动化测试的过程中,我们一定会有这样的需求:希望失败的用例可以自动重跑

在pytest中,提供了pytest-rerunfailures插件可以实现自动重跑的效果

1.使用前提

Python 3.5, 最高 3.8, or PyPy3pytest 5.0或更高版本

2.兼容性

不可以和fixture装饰器一起使用: @pytest.fixture()该插件与pytest-xdist的 --looponfail 标志不兼容该插件与核心--pdb标志不兼容

3.pip安装

pip3 install pytest-rerunfailures -i --trusted-host pypi.douban.com

4.命令描述

支持全局重跑和局部重跑

命令行参数(所有用例有效):--reruns n(重新运行次数),--reruns-delay m(等待运行秒数)

装饰器参数(单个用例有效):reruns=n(重新运行次数),reruns_delay=m(等待运行秒数)

二、命令行 全局重跑

如下,所有用例失败最大重跑3次,下次重试之前间隔2秒

pytest --reruns 3 --reruns-delay 2 -s

举例:

class TestDemo(object): def setup_class(self): print("执行setup_class") def teardown_class(self): print("执行teardown_class") def test_case1(self): print("执行测试用例1") assert 1 + 1 == 3 def test_case2(self): print("执行测试用例2") assert 1 + 3 == 6 def test_case3(self): print("执行测试用例3") assert 1 + 3 == 4

View Code

结果:

三、装饰器 局部重跑

如果我们在测试时,只希望在某一条测试用例失败后重新执行该如何处理呢

可以使用flaky装饰器 @pytest.mark.flaky(reruns=, reruns_delay=)

如下,代表被装饰的用例最多重跑2次,每次间隔3秒

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

举例:

import pytest@pytest.mark.flaky(reruns=2, reruns_delay=3)def test_case1(): print("执行测试用例1") assert 1 + 1 == 3def test_case2(): print("执行测试用例2") assert 1 + 3 == 6def test_case3(): print("执行测试用例3") assert 1 + 3 == 4

View Code

结果一:pytest -s

结果二:pytest --reruns 3 --reruns-delay 2 -s

当命令行和装饰器同时出现时,局部大于全局

参考:

小菠萝

RockChe's Blog


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:pytest的参数化(pytest四种初始化)
下一篇:java中String StringBuffer和StringBuilder的区别详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~