失败重跑与重复执行插件

2024-01-09 22:04

本文主要是介绍失败重跑与重复执行插件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

章节目录:

    • 一、失败重跑插件
      • 1.1 概述
      • 1.2 安装
      • 1.3 参数讲解
      • 1.4 代码示例
    • 二、重复执行插件
      • 2.1 概述
      • 2.2 安装
      • 2.3 代码示例
    • 三、结束语

一、失败重跑插件

1.1 概述

  • pytest-rerunfailures 是一个用于 pytest 测试框架的插件,它提供了重新运行失败的测试用例的功能。
  • 当测试用例失败时,pytest-rerunfailures 可以自动重新运行失败的测试用例,以便给予测试用例更多的机会通过。
  • 兼容版本:python3 、pytest 5.0 及以上。

1.2 安装

  • 使用国内镜像源安装
# 清华大学镜像源。
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pytest-rerunfailures# 阿里云镜像源。
pip3 install -i https://mirrors.aliyun.com/pypi/simple pytest-rerunfailures# 华为云镜像源。
pip3 install -i https://mirrors.huaweicloud.com/repository/pypi/simple pytest-rerunfailures

1.3 参数讲解

  • reruns:这个参数指定了测试函数在失败时重试的次数
  • reruns_delay:这个参数指定了每次重试之间的时间间隔(以为单位)。
  • reruns_filter:可以使用 reruns_filter 参数来指定一个函数,用于动态决定是否应该重试运行测试函数。该函数接受测试函数对象作为参数,并返回一个布尔值,指示是否应该进行重试。
  • reruns_errors:可以使用 reruns_errors 参数来指定一个异常类型或元组,表示哪些异常类型应该触发重试。只有在捕获到指定的异常类型时,才会触发重试。
  • reruns_incremental:可以使用 reruns_incremental 参数来启用增量模式。在增量模式下,重试的次数将逐渐增加,直到测试函数通过或达到最大重试次数。
  • reruns_on_skips:可以使用 reruns_on_skips 参数来指定是否在跳过测试时也进行重试。如果设置为 True,则在跳过测试时也会触发重试

1.4 代码示例

  • @pytest.mark.flaky() 插件提供的装饰器,用于在测试函数上标记重试行为
import randomimport pytestdef get_random():# 0 ~ 101 之间的随机整数。return random.randint(0, 101)# 最多重试 5 次,每次间隔 2 s。
@pytest.mark.flaky(reruns=5, reruns_delay=2)
def test_example_1():r = get_random()print(f"num={r}")# 随机数大于等于70才会通过断言,否则进入重试。assert r >= 70# num=42# num=69# num=86# ========================= 1 passed, 2 rerun in 4.13s ==========================# 如果遇到 ZeroDivisionError 就重试。
@pytest.mark.flaky(reruns_errors="ZeroDivisionError")
def test_example_2():num = 10 / 0assert 5 > num# RERUN# FAILED

二、重复执行插件

2.1 概述

  • pytest-repeat 是一个用于 pytest 的插件,它允许你在运行测试时重复运行特定的测试用例。
  • 通过重复运行测试用例,你可以增加测试的可靠性,尤其是对于那些具有随机性或不确定性的测试场景。

2.2 安装

  • 使用阿里云镜像源安装
pip install -i https://mirrors.aliyun.com/pypi/simple/ pytest-repeat

2.3 代码示例

  • @pytest.mark.repeat(count) 可以将某些测试用例标记为执行重复多次:
import pytest@pytest.mark.repeat(3)
def test_repeat():print("测试用例执行")assert True# [ 33%]测试用例执行# [ 66%]测试用例执行# [100%]测试用例执行

三、结束语


“-------怕什么真理无穷,进一寸有一寸的欢喜。”

微信公众号搜索:饺子泡牛奶

这篇关于失败重跑与重复执行插件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/588578

相关文章

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

java中ssh2执行多条命令的四种方法

《java中ssh2执行多条命令的四种方法》本文主要介绍了java中ssh2执行多条命令的四种方法,包括分号分隔、管道分隔、EOF块、脚本调用,可确保环境配置生效,提升操作效率,具有一定的参考价值,感... 目录1 使用分号隔开2 使用管道符号隔开3 使用写EOF的方式4 使用脚本的方式大家平时有没有遇到自

mybatis直接执行完整sql及踩坑解决

《mybatis直接执行完整sql及踩坑解决》MyBatis可通过select标签执行动态SQL,DQL用ListLinkedHashMap接收结果,DML用int处理,注意防御SQL注入,优先使用#... 目录myBATiFBNZQs直接执行完整sql及踩坑select语句采用count、insert、u

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe

一个Java的main方法在JVM中的执行流程示例详解

《一个Java的main方法在JVM中的执行流程示例详解》main方法是Java程序的入口点,程序从这里开始执行,:本文主要介绍一个Java的main方法在JVM中执行流程的相关资料,文中通过代码... 目录第一阶段:加载 (Loading)第二阶段:链接 (Linking)第三阶段:初始化 (Initia

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

Java实现远程执行Shell指令

《Java实现远程执行Shell指令》文章介绍使用JSch在SpringBoot项目中实现远程Shell操作,涵盖环境配置、依赖引入及工具类编写,详解分号和双与号执行多指令的区别... 目录软硬件环境说明编写执行Shell指令的工具类总结jsch(Java Secure Channel)是SSH2的一个纯J

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

RabbitMQ 延时队列插件安装与使用示例详解(基于 Delayed Message Plugin)

《RabbitMQ延时队列插件安装与使用示例详解(基于DelayedMessagePlugin)》本文详解RabbitMQ通过安装rabbitmq_delayed_message_exchan... 目录 一、什么是 RabbitMQ 延时队列? 二、安装前准备✅ RabbitMQ 环境要求 三、安装延时队

python 线程池顺序执行的方法实现

《python线程池顺序执行的方法实现》在Python中,线程池默认是并发执行任务的,但若需要实现任务的顺序执行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录方案一:强制单线程(伪顺序执行)方案二:按提交顺序获取结果方案三:任务间依赖控制方案四:队列顺序消