失败重跑与重复执行插件

news/2024/11/25 21:22:54/

章节目录:

    • 一、失败重跑插件
      • 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.ppmy.cn/news/1297847.html

相关文章

JavaScript版数据结构与算法(一)栈、队列、链表、集合、树

一、前言 为什么要学习数据结构与算法?最重要的就是面试要考算法,另外就是如果在实际工作当中,能够使用算法优化代码,会提升代码质量和运行效率,作为一名前端人员可能在实际中用的并不是特别多。数据结构与算法是分不…

UG装配-布置

UG装配中,当一个产品在不同情况下具有不同的形态的时候,为了快速进行展示,我们可以使用布置命令. 我们可以直接在工具栏布置中,或者在装配导航器中右键单击装配体,选择布置-编辑,添加不同不同的布置页面 使…

软考高级系统架构设计师考试经验分享

文章目录 1. 软考介绍(1)什么是软考(2)软考的作用(3)软考各科目的难度(4)考试时间(5)考试形式 2.系统架构设计师备考经验(1)辅导资料&…

【Docker基础一】Docker安装Elasticsearch,Kibana,IK分词器

安装elasticsearch 下载镜像 查看版本:Elasticsearch Guide [8.11] | Elastic # 下载镜像 docker pull elasticsearch:7.17.16 # 查看镜像是否下载成功 docker images创建网络 因为需要部署kibana容器,要让es和kibana容器互联 # 创建一个网络&…

Qt QProcess进程间调用及交互通信,完整示例

1. 概述 使用Qt进行应用程序开发,主要是通过QProcess类用于启动外部程序并与其进行通信. 1.1. 运行进程 要启动进程,需要运行的程序的名称和命令行参数作为参数传递给start()。参数以QStringList形式提供。 start()方法原型: void start(…

机器学习简答题

1、请简述人工智能和机器学习,深度学习的关系? 机器学习是人工智能的一个实现途径。深度学习是机器学习的一个方法发展而来 2、根据数据集组成不同,通常可以把机器学习算法分为哪四类? 监督学习、无监督学习、半监督学习、强化…

Linux Debian12系统gnome桌面环境默认提供截屏截图工具gnome-screenshot

一、简介: 在Debian12中系统gnome桌面环境默认提供一个截图捕获工具screenshot,可以自定义区域截图、屏幕截图、窗口截图和录制视频,截图默认保存在“~/图片/截图”路径下。 可以在应用程序中搜索screenshot,如下图: 也可以在桌面右上角找到…

Do you know about domestic CPUs

Do you know about domestic CPUs CPU指令集国产CPU CPU指令集 国产CPU 参考文献 国产CPU之4种架构和6大品牌指令集及架构一文深入了解 CPU 的型号、代际架构与微架构国产GPU芯片厂商有哪些深入GPU硬件架构及运行机制详解服务器GPU架构和基础知识