pytest教程-29-重复执行用例插件-pytest-repeat

领取资料,咨询答疑,请➕wei:  June__Go

上一小节我们学习了设置用例超时时间插件pytest-timeout,本小节我们讲解一下pytest重复执行用例插件pytest-repeat。

前言

做功能测试的时候,经常会遇到某个模块不稳定,偶然会出现一些bug,对于这种问题我们会针对此用例反复执行多次,直到复现出这个问题来。还有自动化运行用例时候,也会出现偶然的bug,可以针对单个用例,或者针对某个模块的用例重复执行多次。此外该用例是不管失败与否用例都需要跑多次,与失败重跑不同,失败重跑只会在失败的时候重新尝试多次。pytest-repeat插件就可以实现重复运行测试用例的功能。

pytest-repeat安装

pip install pytest-repeat

使用方式

命令行使用--count参数来指定测试用例的运行次数

pytest --count=5 test_file.py    # --count=5表示重复执行5次

举例:

# file_name: test_repeat.py


import pytest


def test_01():
    print("\n测试用例test_01")


def test_02():
    print("\n测试用例test_02")


def test_03():
    print("\n测试用例test_03")


if __name__ == '__main__':
    pytest.main(['-s', 'test_repeat.py'])

命令行输入指令: pytest --count=3 test_repeat.py -s -v ,运行结果:

collected 9 items                                                                                                                                                                                                                                                                                                                                                   

test_repeat.py::test_01[1-3] 
测试用例test_01
PASSED
test_repeat.py::test_01[2-3] 
测试用例test_01
PASSED
test_repeat.py::test_01[3-3] 
测试用例test_01
PASSED
test_repeat.py::test_02[1-3] 
测试用例test_02
PASSED
test_repeat.py::test_02[2-3] 
测试用例test_02
PASSED
test_repeat.py::test_02[3-3] 
测试用例test_02
PASSED
test_repeat.py::test_03[1-3] 
测试用例test_03
PASSED
test_repeat.py::test_03[2-3] 
测试用例test_03
PASSED
test_repeat.py::test_03[3-3] 
测试用例test_03
PASSED

========================================================================================================================================================================= 9 passed in 0.02s =========================================================================================================================================================================

从结果中可以看到,每个测试用例被重复运行了三次。

通过指定--repeat-scope参数来控制重复范围

从上面例子的运行结果中可以看到,首先重复运行了3次test_01,然后重复运行了3次test_02,最后重复运行了3次test_03。但是有的时候我们想按照执行顺序为test_01,test_02,test_03这样的顺序来重复运行3次呢,这时候就需要用到另外一个参数了: --repeat-scope 。

--repeat-scope与pytest的fixture的scope参数是类似的:--repeat-scope可设置的值为:module、class、session、function(默认)。

①module:以整个.py文件为单位,重复执行模块里面的用例,然后再执行下一个(以.py文件为单位,执行一次.py,然后再执行一下.py);

②class:以class为单位,重复运行class中的用例,然后重复执行下一个(以class为单位,运行一次class,再运行一次class这样);

③session:重复运行整个会话,所有测试用例运行一次,然后再所有测试用例运行一次;

④function(默认):针对每个用例重复运行,然后再运行下一次用例;

例如:使用 --repeat-scope=session 重复运行整个会话,命令行输入指令: pytest test_repeat.py -s -v --count=3 --repeat-scope=session ,运行结果为:

从结果中可以看到,执行顺序为:test_01、test_02、test_03;然后重复运行3次;

通过装饰器@pytest.mark.repeat(count)指定某个用例重复执行

# file_name: test_repeat.py


import pytest


def test_01():
    print("\n测试用例test_01")


@pytest.mark.repeat(3)
def test_02():
    print("\n测试用例test_02")


def test_03():
    print("\n测试用例test_03")


if __name__ == '__main__':
    pytest.main(['-s', 'test_repeat.py'])

命令行输入指令: pytest test_repeat.py -s -v ,运行结果:

从结果中可以看到只有被装饰器@pytest.mark.repeat(3)标记的用例test_02被重复运行了3次。

重复运行用例直到遇到失败用例就停止运行

通过设置pytest -x  和  pytest-repeat  命令行参数的结合使用就能实现重复运行测试用例直到遇到第一次失败用例就停止运行。

pytest test_file.py -x -v --count=20

命令行中输入上述指令后,测试用以将重复运行20遍,但重复运行的过程中一旦遇到失败用例就会停止运行。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走,希望可以帮助到大家!领取资料,咨询答疑,请➕wei:  June__Go

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

五款最受欢迎的上网行为管理软件

五款最受欢迎的上网行为管理软件 员工上网看视频怎么办?员工偷偷刷抖音怎么办?员工天天上招聘网,是不是有离职打算? 解决上述困扰的最好办法是使用监控软件了解员工一言一行。以下是几款推荐的上网行为管理和监控软件:…

【Linux】开关机命令和服务管理类命令

一般Linux是不会经常进行关机的,关机的正确流程是: sync->shutdown->reboot->poweroff sync: 将内存中的数据同步到硬盘中poweroff: 关闭系统,等同于shutdown -h nowreboot: 重启系统,等同于 shutdown -r nowshutdown[选项] [时间] shutdown命令常见用法: shutdown:…

二叉树的先序、中序和后序遍历,以及二叉树的高度

1、二叉树的三种遍历方式 前序遍历: 访问根节点前序遍历左子树前序遍历右子树示例:对于节点 A(左子树为 B,右子树为 C),遍历顺序为 A -> B -> C。 中序遍历: 中序遍历左子树访问根节点中…

如何在Windows服务做性能测试(CPU、磁盘、内存)

目录 前言1. 基本知识2. 参数说明 前言 由于需要做一些接口测试,测试是否有真的优化 1. 基本知识 该基本知识主要用来用到Performance Monitor,以下着重介绍下这方面的知识 性能监视器(Performance Monitor):Windo…

本地部署Docker容器可视化图形管理工具DockerUI并实现无公网IP远程访问——“cpolar内网穿透”

文章目录 前言1. 安装部署DockerUI2. 安装cpolar内网穿透3. 配置DockerUI公网访问地址4. 公网远程访问DockerUI5. 固定DockerUI公网地址 前言 DockerUI是一个docker容器镜像的可视化图形化管理工具。DockerUI可以用来轻松构建、管理和维护docker环境。它是完全开源且免费的。基…

Unity的旋转实现一些方法总结(案例:通过输入,玩家进行旋转移动)

目录 1. Transform.Rotate 方法 使用 2. Transform.rotation 或 Transform.localRotation 属性与四元数 使用方式: 小案例 :目标旋转角度计算:targetRotation(Quaternion类型) 玩家发现敌人位置,玩家…

八股中的记录

1. protected修饰符:同包或子类(不同包) 区分普通人和专业人调用的一些方法 2. 抽象:abstract修饰类和方法 抽象类不可实例化,避免错误的new对象 抽象方法是用abstract修饰的方法声明,没有方法体&#xff…

半导体存储器整理

半导体存储器用来存储大量的二值数据,它是计算机等大型数字系统中不可缺少的组成部分。按照集成度划分,半导体存储器属于大规模集成电路。 目前半导体存储器可以分为两大类: 只读存储器(ROM,Read Only Memory&#xff…

MySQL连接失败

最近接手了公司的一个软件项目,通过打印日志,发现该软件会偶发出现连接MySQL数据库失败的问题。 首先排查是否是网络问题导致的连接失败。对该软件和MySQL的3306端口进行抓包,发现连接数据库失败时并没有出现tcp三次握手失败的情况。并且该软…

semaphore信号量使用+原理分析

1.概述 Semaphore 信号量,相当于一个计数器,通常用来限制线程的数量。 每个线程操作前会先获取一个许可证,逻辑处理完成之后就归还这个许可证。 通俗的解释:相当于一个停车场,有10个停车位,进来一个车&am…

按照以下步骤使用Transformer模型

“Transformer”是一种深度学习模型架构,用于处理序列数据,特别是在自然语言处理(NLP)领域中表现出色。它由Google Brain团队于2017年提出,并在机器翻译任务中取得了突破性的成果。Transformer的核心思想是完全基于自注…

指挥中心实战指挥平台-通信指挥类装备多链路聚合设备解决方案实例

一、建设目标及要求 坚持“一切为了实战、一切围绕实战、一切服务实战”的总要求,紧紧围绕大数据应用和自动化、智能化、智慧化这一主题主线,建设升级改造支队指挥中心,集成语音、视频、即时消息、短信、对讲、会议等多媒体通信能力&#xf…

基于SpringBoot的智慧物业管理设计与实现论文

摘  要 随着我国发展和城市开发,物业管理已形成规模,其效益也越来越明显。在经济效益对地方政府而言,主要体现为:减少了大量的财政补贴,对住宅区开发企业而言,能提高物业市场竞争力,使开发企…

场景 - 分库分表

分什么 数据量大分表,并发大分库 分表字段如何选择 如果对交易订单进行分表,可以选择的东西很多,比如说商户id,用户id,地区等等 分表的时候要考虑到数据倾斜问题 数据倾斜 比如说按商户号进行分表,一共…

什么是许可式邮件营销

许可式邮件营销(Permission-based Email Marketing)是一种营销策略,它依赖于接收者的同意或明确的许可来发送商业电子邮件。这种营销方式的核心在于尊重潜在客户或现有客户的选择权,通过提供价值和服务来建立和维护与客户的良好关…

@AutoWired和@Resource的区别

AutoWired和Resource的区别 这两个我们在项目中,经常去使用。很少有人知道他们有什么区别。下面我们将从 来源依赖查找顺序支持的参数依赖注入的用法支持 这四个方面来说明他们俩个的区别 来源 Autowired: 这是Spring框架自带的注解,用于实现自动依…

Git命令行操作(本地操作)

入口 1、任意目录》鼠标右键》Open Git Bash here 2、桌面快捷方式 本地库初始化 在本地库项目文件夹执行命令:git init 验证是否执行成功 .git目录中存放的是本地库相关的子目录和文件,不要删除、修改 设置签名 1、形式 用户名:tom Email地址:GoodMorning@qq.com 2、作…

六、项目发布-- 3. Node.js+express 编写书城首页API

前面那些准备工作做完之后,现在我们就具体来用Node.js来写一个简单的API 基本API编写: 建个后端文件夹,放到vscode打开 我们之前的代码都是前端代码,现在我们来做一个后端的代码。新建一个新的文件夹叫node_new_book&#xff0…

LateX的基础学习

what can i say 在text.tex中写下 \documentclass{article} \begin{document]Hello \LaTeX. \end{document} 关闭记事本,cmd中dir保存,用latex text.tex来编译,可以命令行慢慢编译,这可以做成bat文件 为什么不直接开始在texst…

第八讲:C语言指针(2)

目录 1、数组名的理解 2、使⽤指针访问数组 3、⼀维数组传参的本质 4、冒泡排序 5、⼆级指针 6、指针数组 7、指针数组模拟⼆维数组 1、数组名的理解 其实数组名本来就是地址&#xff0c;⽽且 是数组⾸元素的地址&#xff0c;例如&#xff1a; #include <stdio.h>…