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

news2025/2/27 22:54:08

前提条件

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

  • 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

DOC

https://github.com/pytest-dev/pytest-rerunfailures

https://pypi.org/project/pytest-rerunfailures/#description

重点

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

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

使用方法

第一种方法:命令行

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

pytest --reruns 5 -s 

运行失败的 fixture 或 setup_class 也将重新执行
2、也可以这样用

pytest --reruns 5 --reruns-delay 1

但是condition并没有这个命令行,它变成了–only-rerun

$ 遇到AssertionError错误就重跑
$ pytest --reruns 5 --only-rerun AssertionError
# 遇到AssertionError或者ValueError 就重跑
$ pytest --reruns 5 --only-rerun AssertionError --only-rerun ValueError

示例

def test_a():
    assert int('a')  # 会产生一个ValueError
#执行
pytest -sv --reruns 2 --reruns-delay 1 --only-rerun ValueError test_demo.py

结果
在这里插入图片描述

  • –only-rerun的意思很明确,只有遇到ValueError才重跑

  • 同样的代码,换个参数–rerun-except,除了ValueError才会重跑,遇到ValueError并不重跑

pytest -sv --reruns 2 --reruns-delay 1 --rerun-except ValueError test_demo.py

在这里插入图片描述

第二种方法:装饰器 @pytest.mark.flaky

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

示例:

import pytest

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

执行结果
在这里插入图片描述

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

import pytest

@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标志不兼容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1027073.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Apache Hive安装部署详细图文教程

目录 一、Apache Hive 元数据 1.1 Hive Metadata 1.2 Hive Metastore 二、Metastore 三种配置方式 ​2.1 内嵌模式 ​2.2 本地模式 ​2.3 远程模式 ​三、Hive 部署实战 3.1 安装前准备 3.2 Hadoop 与 Hive 整合 3.3 远程模式安装 3.3.1 安装 MySQL 3.3.2 …

【数据结构】二叉树的链式实现及遍历

文章目录 一、二叉树的遍历1、前序遍历2、中序遍历3、后序遍历4、层序遍历 二、二叉树结点个数及高度1、二叉树节点个数2、二叉树叶子节点个数3、二叉树第k层节点个数4、二叉树查找值为x的节点 三、二叉树创建及销毁1、通过前序遍历数组创建二叉树2、二叉树的销毁3、判断是否为…

基于SSM+Vue的乐购游戏商城系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用Vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

PaddleOCR ‘could not create a primitive descriptor for a reorder primitive‘异常处理

环境 paddlepaddle2.4.0 paddlehub2.3.1 问题描述 PaddleOCR 使用自己训练的模型时,抛出异常 could not create a primitive descriptor for a reorder primitive,且仅在开启MKL加速时报错,不开启MKL加速则不报错。 解决方案 通过查询pa…

笔记1-2:

一、磁荷与磁流的引入 麦克斯韦方程组: 引入磁荷和磁流的概念,上述方程可以写成对称形式: 磁荷和磁流实际上不存在,只具有某种等效意义,可以把某个区域中的电磁场看成是由一组等效磁型源所产生。 对于均匀和各向同性…

MACOS Ventura 本地安装HDFS 3.1.4

1、终端,输入第一条命令一直回车即可,然后将生成的将公钥内容写入到~/.ssh/authorized_keys中 ssh-keygen -t rsacat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 2、系统登录-共享-远程登录,打开。如下: 3、官网下载安…

Learn Prompt-Prompt 高级技巧:AutoGPT

AutoGPT 是一个由Toran Richards创建的流行开源项目。它利用GPT4作为大脑,结合langchain的链接思想,连接各种工具和互联网资源,来完成人类给予的任务。您只需要设定一个目标,AutoGPT就会自主规划并逐步执行任务。如果遇到问题&…

IEEE PDF eXpress系统报错:TimesNewRoman PS-BoldMT, ItalicMT, PSM

问题: IEEE PDF eXpress系统报错:Errors: Font TimesNewRomanPS-BoldMT, TimesNewRomanPS-ItalicMT, TimesNewRomanPSMT is not embedded (137x on pages 2-6) 答案: 主要原因是PDF的字体嵌入问题,可以看到下图中没有报错中的字体…

JS Ajax 封装

ajax 封装 一、 什么是Ajax?二、 Ajax的优缺点?2.1 优点2.2 缺点 三、 Ajax的使用3.1 状态码3.2 xhr的基本使用3.3 ajax原生封装:3.3.1 触发GET请求:3.3.2 调用POST请求: 四、Ajax的约束 一、 什么是Ajax? …

zabbix实现钉钉报警

首先钉钉创建一个团队 自定义关键词 查看zabbix-server脚本存放的位置: [rootcontrolnode ~]# grep ^AlertScriptsPath /etc/zabbix/zabbix_server.conf AlertScriptsPath/usr/lib/zabbix/alertscripts zabbix server设置 在配置文件书写脚本目录vim /etc/za…

将 Ordinals 与比特币智能合约集成:第 2 部分

在上一篇文章中,我们展示了一种将 Ordinal 与智能合约集成的方法,即将Ordinal和合约放在同一个 UTXO 中。 今天,我们介绍了一种集成它们的替代方案,即它们位于单独的 UTXO 中。 作为展示,我们开发了一个智能合约&…

go语言操作数据库

1.10 GO连接MySQL 因为Go语言没有提供任何官方数据库驱动,所以需要安装第三方函数库。由于在github上安装,所以需要安装git软件,安装过程一直点击下一步即可。安装完成后需要配置环境变量 1.10.1 安装git git软件 安装完毕后,配…

基于ENC28J60+uIP1.0+STM32的UDP Server实现,以及主动发送数据,几个关键的问题可算整明白了!

ENC28J60,是一款SPI接口的以太网PHYMAC芯片,实现以太网物理层和MAC层硬件通信。uIP是一个TCP/IP软件协议栈,实现TCP、UDP、ARP、ICMP等网络协议。STM32F103RCT6通过SPI接口与ENC28J60通讯,并移植uIP协议,实现一个小型的…

数据分析回头看2——重复值检查/元素替换/异常值筛选

0、前言: 这部分内容是对Pandas的回顾,同时也是对Pandas处理异常数据的一些技巧的总结,不一定全面,只是自己在数据处理当中遇到的问题进行的总结。 1、当数据中有重复行的时候需要检测重复行: 方法:使用p…

BERT: 面向语言理解的深度双向Transformer预训练

参考视频: BERT 论文逐段精读【论文精读】_哔哩哔哩_bilibili 背景 BERT算是NLP里程碑式工作!让语言模型预训练出圈! 使用预训练模型做特征表示的时候一般有两类策略: 1. 基于特征 feature based (Elmo)…

优化系统报错提示信息,提高人机交互(二)

如果服务器接口报错,接口返回报错信息,是怎么实现的呢? 接口调用示例 controller代码 AllArgsConstructor RestController Slf4j public class DemoController {GetMapping("exceptionTest")public Result exceptionTest(Integer…

个人所思所想录

🧑‍💻作者名称:DaenCode 🎤作者简介:CSDN实力新星,后端开发两年经验,曾担任甲方技术代表,业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开…

优化系统报错提示信息,提高人机交互(一)

1、常规报错及处理 package com.example.demo.controller;import com.example.demo.service.IDemoService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.w…

13基于PCA的人脸识别,程序已调通,可将自己的数据替换进行识别,得到识别准确率结果,MATLAB平台。

基于PCA的人脸识别,程序已调通,可将自己的数据替换进行识别,得到识别准确率结果,MATLAB平台。

DevSecOps内置安全保护

前言 随着DevOps的发展,DevOps大幅提升了企业应用迭代的速度。但同时,安全如果不能跟上步伐,不仅会抵消DevOps变革带来的提升,拖慢企业数字化转型进程,还会导致漏洞与风险不约而至。所以安全能力在全球范围内受到的重…