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

2023-11-05

前提条件

以下先决条件才能使用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标志不兼容
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • Pytest版本冲突错误

    更新 Debian Jessie 后 pytest 无法工作 py test Traceback most recent call last File usr bin py test line 5 in
  • 使用 unittest.mock 在 Python 中模拟 os.remove

    我该如何嘲笑os remove with unittest mock 我的尝试 使用pytest def test patch remove with patch os remove remove foo 给出错误 remove foo E
  • 在 py.test 中的每个测试之前和之后运行代码?

    我想在测试套件中的每个测试之前和之后运行额外的设置和拆卸检查 我看过固定装置 但不确定它们是否是正确的方法 我需要在每次测试之前运行设置代码 并且需要在每次测试后运行拆卸检查 我的用例是检查未正确清理的代码 它会留下临时文件 在我的设置中
  • 使用 pytest 在 VSCODE 中设置 python 测试时出现问题

    我正在尝试将 VSCode 中的测试扩展与 Python 扩展一起使用 我使用 pytest 作为我的测试库 我的文件夹结构如下所示 PACKAGENAME PACKAGENAME init py main py tests test ma
  • 测试 post 请求时 Django 消息中间件问题

    我正在尝试测试一个 UpdateView 它将一条消息添加到重定向的成功页面 看来我的问题来自messages因为 pytest 返回 django contrib messages api MessageFailure 如果不安装 dja
  • 如何使用 pytest-mock 或 magicmock 模拟导入的对象

    我正在尝试理解mock monkeypatch pytest mock能力 让我知道这是否可能 如果没有 请建议我如何测试此代码 我的代码结构 app init py some module1 init py some module2 in
  • 如何将 VSCode 与 pytest 集成(“测试发现失败”)?

    我无法将项目的单元测试集成到 VSCode 中 测试发现失败 因为 pytest 无法识别源文件 只是为了澄清 这是一个关于 VSCode 的问题 与 pytest 无关 我在这里是因为 VSCode 将其问题部分链接到 SOF 如果我手动
  • pytest - 在 setup_module 中使用 funcargs

    我在 conftetst py 中包含了我自己的命令行选项 def pytest addoption parser parser addoption backend default test backend help run testx f
  • pytest 无法导入模块,而 python 可以

    我正在用 Python 开发一个包 我使用虚拟环境 我在 virtualenv 的 pth 路径中设置了模块根目录的路径 这样我就可以在开发代码时导入包的模块并进行测试 问题 1 这是一个好方法吗 这工作正常 这是一个例子 这是我想要的行为
  • 如何在pytest运行时获取测试名称和测试结果

    我想在运行时获取测试名称和测试结果 I have setup and tearDown我的脚本中的方法 在setup 我需要获取测试名称 然后在tearDown我需要获取测试结果和测试执行时间 我有办法做到这一点吗 你可以 使用钩子 我的测
  • 尝试使用 pytest 在 python 3.10 上执行测试时出错

    如果我尝试使用执行测试pytest使用 python 3 10 我收到以下错误 TypeError required field lineno missing from alias 谷歌说这是一个已知问题 但我找不到解决的方法 如果我用 3
  • py.test 无法导入我的模块

    我正在努力正确导入 python 我想要实现的是拥有一个包含多个源文件的模块和一个包含单元测试的测试文件夹 无论我做什么 我都无法让 py test 3 执行我的测试 我的目录布局如下所示 module init py testclass
  • Pytest - 测试解析器错误:无法识别的参数

    我正在尝试测试一个非常简单的函数 由于多次尝试测试使用参数解析器作为参数的更复杂的函数而失败 来自 runfile py import argparse import os def get input args parser argpars
  • 如何在 pytest 中测试类层次结构?

    我已经使用 pytest 一段时间了 并学会了喜欢参数化和固定装置 我第一次想测试一些具有分支继承结构的类 当然 我想为子类重用测试用例 假设我有以下包结构 mock pkg child py grandchild py parent py
  • 运行 py.test 时出现错误 ImportMismatchError

    当我在本地运行测试时 它工作正常 但是在创建 docker 并在容器内运行后 我收到以下错误 usr local lib python3 5 site packages pytest config py 325 in getconftest
  • 我无法在 PyCharm 下运行 Django Python pytest

    pytest portal test session starts platform darwin Python 3 6 0 pytest 3 0 6 py 1 4 32 pluggy 0 4 0 Django settings confi
  • pytest - 如何将 pytest_addoption 值传递给 pytest 参数化?

    我必须在我存储在 pytest 中的 pytest 命令中传递一个参数addoption 我想在 pytest 中使用这些值parametrize功能 Command pytest range from 3 range to 5 test
  • 如何将 pytest 装置与 django TestCase 一起使用

    我如何在TestCase方法 类似问题的几个答案似乎暗示我的例子应该有效 import pytest from django test import TestCase from myapp models import Category py
  • 使用 pytest 动态控制测试顺序

    我想使用逻辑来控制测试的顺序 该逻辑将在它们已经运行时动态地重新排序它们 我的用例是这样的 我使用 xdist 并行化我的测试 每个测试都使用来自公共且有限池的外部资源 某些测试比其他测试使用更多的资源 因此在任何给定时间 当只有一小部分资
  • Django Channels Postgres InterfaceError:连接已关闭

    我似乎无法理解这里的问题 我正在为我的渠道消费者编写测试文档中的描述 https channels readthedocs io en latest topics testing html 我通常会使用 Django 默认的单元测试 但由于

随机推荐

  • ArcGIS Server Linux 10.7压缩包

    ArcGIS Server Linux 10 7压缩包 链接 https pan baidu com s 1GYjElpbXZN0938 vWyWSOA 提取码 nkbp
  • 分享一个去水印接口,完全免费,早点下手啊

    上传到任意空间或者服务器 访问即可用 目前支持很多平台 抖音 快手 皮皮虾 西瓜 红书 微视 最右 哔哩哔哩 皮皮搞笑等常见平台 而且还是免费的 该接口测试 完全免费 如果那天收费了 大家可以直接放弃使用
  • linux下如何清理缓存

    手头的路由本身内存就比较少 上面又跑了一个nginx php的环境 简直慢的爆炸 check的时候发现内存经常被占了很多 linux的虚拟内存机制 很多时候回导致内存得不到及时释放 有时候内存很少了 kill了很多进程 但是内存还是没有释放
  • React_井字棋

    该项目是跟着react官网写的 由于是初学 就只用来记录自己的代码 如果和我一样是初学react建议看官网 react import React from react import ReactDOM from react dom clien
  • C++的范围for语句详解 附易错实例

    博客内容 C 读取一行内个数不定的整数的方式 作 者 陈大大陈 个人简介 一个正在努力学技术的准前端 专注基础和实战分享 欢迎私信 欢迎大家 这里是CSDN 我总结知识和写笔记的地方 喜欢的话请三连 有问题请私信 范围for语句是C 引入的
  • 深度学习做分类时出现list index out of range解决办法之一

    error list index out of range 索引出了问题 首先检查一下自己的数组索引是不是真的有问题 如果没问题就是自己读入的文件里包含不能识别的字符 比如空格 参考 https blog csdn net weixin 3
  • Ubuntu 12.04 下安装ncurses-devel

    解决Ubuntu 12 04 使用 make menuconfig 配置Linux 内核时 出现缺少 ncurses devel 库支持 Unable to find the ncurses libraries or the require
  • Instrusive 【HDU - 5040】【2014 北京 BFS】

    题目链接 一道有着很多需要细节的地方需要注意的题 挺不错的 这题的数据也是给的很好 然后讲一下题意吧 题意 有一个N N的网格 有起点M和终点T 我们从起点需要走到终点 每一步需要花费的时间是单位一 但是呢 我们不能被摄影机拍摄到 摄影机是
  • halcon21.11安装教程详解

    文章目录 1 软件下载 2 安装过程 halcon21 11安装教程详解 1 软件下载 a 官网 https www mvtec com cn b 百度网盘下载 链接 https pan baidu com s 1 Bdz1l54PQWxb
  • Pycharm-Python 下载安装第三方库

    Pycharm Python 下载安装第三方库 一 安装第三方库 00 新建项目 02 两种安装方式 通过代码提示安装 pip install 安装 二 小结 最近我使用 pip install 安装第三方库时出现了一些问题 不知道为什么
  • nvidia自动更新带来的问题

    实验室的ubuntu 14 04 lts server 上的gpu突然不能用了 使用 nvidia smi 查看gpu信息时显示 Failed to initialize NVML GPU access blocked by the ope
  • leetcode 54. 螺旋矩阵 python

    题目描述 题解 1 逆时针的遍历顺序为 右 下 左 上 定义一个directions的list 分别对应这四个方向 如果当前方向的下一个位置到达matrix边界或者已经被访问过 则变换为下一个方向 2 定义一个和输入matrix大小相同的f
  • scala学习-Description Resource Path Location Type value toDF is not a member of org.apache.spark.rdd.R

    编译如下代码时 出现value toDF is not a member of org apache Spark rdd RDD People 错误 val rdd RDD People sparkSession sparkContext
  • 单例模式详解----懒汉式/饿汉式(C++实现)

    单例模式 单例模式是一种常用的软件设计模式 它的核心结构中只包含一个被称为单例的特殊类 通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问 从而方便对实例个数的控制并节约系统资源 如果希望在系统中某个类的对象只能存在一个 单
  • 强化学习算法回顾 Q-learning 玩 OpenAI 的 Taxi 游戏

    这里使用的是 OpenAI Taxi V3 环境 这里有 4 个地点 分别用 4 个字母表示 任务是要从一个地点接上乘客 送到另外 3 个中的一个放下乘客 越快越好 成功运送一个客人获得 20 分奖励 每走一步损失 1 分 希望尽快送到目的
  • JVM内存泄露与溢出

    内存泄漏和内存溢出 内存泄露 申请的内存空间没有被正确释放 导致内存空间被占用 并且之后也不会使用 内存溢出 申请的内存空间超过了空闲内存空间 即内存不够使用 所以说 内存泄漏可能会导致内存溢出 我们需要注意有可能会导致内存泄漏的情况 常见
  • 手把手带你linux部署清华大学大模型最新版 chaglm2-6b

    准备工作 下载项目源代码 git clone https github com THUDM ChatGLM2 6B 切换到项目根目录 cd ChatGLM2 6B 安装依赖 pip install r requirements txt 安装
  • 华为免费虚拟服务器,免费虚拟服务器试用一年

    免费虚拟服务器试用一年 内容精选 换一换 本文介绍了存储容灾SDRS各特性版本的功能发布和对应的文档动态 新特性将在各个区域 Region 陆续发布 欢迎体验 购买服务及配置特性时 操作步骤中未框选的配置项请保持默认值 申请服务时 未开通企
  • Ubuntu18.04下OpenCV3.4.11的安装及使用示例

    目录 一 认识 OpenCV 二 安装 OpenCV 1 安装包 2 配置环境 三 使用示例 图片 四 使用示例 视频 1 虚拟机获取摄像头权限 2 播放视频 3 录制视频 五 总结 六 参考资料 安装环境 VMware虚拟机安装的Ubun
  • Pytest系列-失败重跑插件pytest-rerunfailures的使用(9)

    前提条件 以下先决条件才能使用pytest rerunfailures Python 3 5 最高 3 8 or PyPy3 pytest 5 0或更高版本 安装 pip3 install pytest rerunfailures i ht