环境依赖

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

插件安装

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 命令行选项,并指定要运行测试的最大次数:

pytest --reruns 5 -s

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

重新运行的延时设置

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

pytest --reruns 5 --reruns-delay 10 -s

重新运行指定的测试用例

添加flaky装饰器 @pytest.mark.flaky(reruns=5) ,并指定最大重新运行次数,示例代码如下:

# -*- coding: utf-8 -*-
# @Time : 2020/11/25 20:36
# @Author : longrong.lang
# @FileName: test_retry.py
# @Software: PyCharm
# @Cnblogs :https://www.cnblogs.com/longronglang
from collections import Counter
import random
import pytest @pytest.mark.flaky(reruns=5)
def test_retry1():
n = random.randint(0, 9)
print(f"\n 输出随机数: {n} ")
assert n == 2 @pytest.mark.flaky(reruns=5)
def test_retry2():
assert random.choice([True, False, False])

执行结果:

对单个测试用例设置重新运行等待时间

示例代码如下:

@pytest.mark.flaky(reruns=5,reruns_delay=2)
def test_retry1():
n = random.randint(0, 9)
print(f"\n 输出随机数: {n} ")
assert n == 2

运行结果:

注意事项

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

兼容性问题

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

系列参考文章:

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

最新文章

  1. 理解Compressed Sparse Column Format (CSC)
  2. The BINARY and VARBINARY Types
  3. 单片机汇编语言实现DES加密算法
  4. 怎样使用docker不加sudo
  5. C#实现接口xml序列化与反序列化
  6. 【留念贴】Android开发——计算器
  7. java中的jdk切换(无需卸载原有jdk)
  8. JavaScript(五):函数(闭包,eval)
  9. java基础语法-内部类与匿名内部类
  10. Java_oracle超出打开游标的最大数的原因和解决方案
  11. axis2与cxf区别
  12. windows环境telnet发送命令
  13. leetcode 300最长上升子序列
  14. 6.5 开始进入设计 … Transition to Design
  15. typedef void (*Fun) (void) 的理解——函数指针——typedef函数指针
  16. MD5加密算法中的加盐值 ,和彩虹表攻击 防止彩虹表撞库
  17. kafka学习之-KafkaOffsetMonitor后台监控
  18. python2.6更改为Python2.7
  19. HTML5+Bootstrap 学习笔记 3
  20. log4cplus基础知识

热门文章

  1. HBase进阶
  2. Graph-GraphSage
  3. 给大家分享一下java数据库操作步骤
  4. ctfshow 1024杯 部分web题解
  5. pxe装机部署
  6. SpringBoot + Swagger Demo
  7. Ubuntu下创建apt源
  8. 三年工作经验,从小厂离职后,我凭什么拿到了阿里的offer
  9. 4g数据无线传输终端dtu
  10. Linux 系统编程 学习:10-线程:线程的属性