前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pytest系列(11)- 失败重跑插件pytest-rerunfailures的详细使用

Pytest系列(11)- 失败重跑插件pytest-rerunfailures的详细使用

作者头像
小菠萝测试笔记
发布2020-06-09 15:59:47
2.5K0
发布2020-06-09 15:59:47
举报
文章被收录于专栏:自动化、性能测试

如果你还想从头学起Pytest,可以看看这个系列的文章哦!

https://www.cnblogs.com/poloyy/category/1690628.html

环境前提

以下先决条件才能使用pytest-rerunfailures

  • Python 3.5, 最高 3.8, or PyPy3
  • pytest 5.0或更高版本

安装插件

代码语言:javascript
复制
pip3 install pytest-rerunfailures -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

提前了解重点

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

装饰器参数:reruns=n(重新运行次数),reruns_delay=m(等待运行秒数)

重新运行所有失败的用例

要重新运行所有测试失败,使用 --reruns 命令行选项,并指定要运行测试的最大次数:

代码语言:javascript
复制
pytest --reruns 5 -s 

知识点

运行失败的fixture或setup_class也将重新执行

添加重新运行的延时

要在两次重试之间增加延迟时间,使用 --reruns-delay 命令行选项,指定下次测试重新开始之前等待的秒数

代码语言:javascript
复制
pytest --reruns 5 --reruns-delay 10 -s

重新运行指定的测试用例

要将单个测试用例添加flaky装饰器 @pytest.mark.flaky(reruns=5) ,并在测试失败时自动重新运行,需要指定最大重新运行的次数

小栗子

代码语言:javascript
复制
import pytest


@pytest.mark.flaky(reruns=5)
def test_example():
    import random
    assert random.choice([True, False, False])

执行结果

代码语言:javascript
复制
collecting ... collected 1 item

11_reruns.py::test_example RERUN                                         [100%]
11_reruns.py::test_example PASSED                                        [100%]

========================= 1 passed, 1 rerun in 0.05s ==========================

同样的,这个也可以指定重新运行的等待时间

代码语言:javascript
复制
@pytest.mark.flaky(reruns=5, reruns_delay=2)
def test_example():
    import random
    assert random.choice([True, False, False])

注意事项

如果指定了用例的重新运行次数,则在命令行添加--reruns对这些用例是不会生效的

兼容性问题

  • 不可以和fixture装饰器一起使用:

@pytest.fixture()

  • 该插件与pytest-xdist的 标志不兼容

--looponfail

  • 该插件与核心标志不兼容

--pdb

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-04-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境前提
  • 安装插件
  • 提前了解重点
  • 重新运行所有失败的用例
    • 知识点
      • 添加重新运行的延时
      • 重新运行指定的测试用例
        • 小栗子
          • 执行结果
            • 同样的,这个也可以指定重新运行的等待时间
              • 注意事项
              • 兼容性问题
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档