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

news2025/1/12 8:54:50

领取资料,咨询答疑,请➕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.coloradmin.cn/o/1618641.html

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

相关文章

STM32 I²C通信

一、IC总线通信 1.1 IC总线特点 IC(Inter Integrated Circuit,集成电路总线),通过串行数据线SDA(Serial Data)和串行时钟线SCL(Serial Clock)来完成数据的传输。 特点:…

CentOS配置JDK8环境并安装配置neo4j

1. 工具安装 1. 安装wget yum install -y wget2. 安装vim yum install -y vim-enhanced2. 配置JDK 1. 安装JDK 先到官网下载jdk8的压缩包,点我传送,并将压缩包上传到虚拟机的/usr/local目录下。 cd /usr/local # 进入 /usr/local目录 tar -zxvf jdk-…

代码随想录算法训练营第20天 |654.最大二叉树、 617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

代码随想录算法训练营第20天 |654.最大二叉树、 617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树 自己看到题目的第一想法看完代码随想录之后的想法自己实现过程中遇到哪些困难 链接: 654.最大二叉树 链接: 617.合并二叉树 链接: 700.二叉搜索树中的搜索 链接: 98.…

【MATLAB源码-第196期】基于matlab的A*融合DWA算法栅格路径规划仿真,画出路径图、姿态角度以及线角速度。

操作环境: MATLAB 2022a 1、算法描述 A算法与DWA算法的融合是一个高效的路径规划策略,这种策略将A算法的全局路径规划能力与DWA算法的局部避障能力结合起来,以期达到更快、更安全的导航效果。以下是对这种融合策略的详细描述。 一、基本概…

达梦工具使用-DTS

文章目录 前言一、图形化界面的DTS1.从Oracle迁移到DM2.从DM迁移到Oracle3.同构DM数据库迁移 二、命令行方式的DTS总结 前言 DTS是达梦数据库自带的数据迁移工具,主要场景适用于同构数据库轻量数据级之间数据迁移,当数据量不大时,也可用于不…

解决“找不到MSVCP120.dll”或“MSVCP120.dll丢失”的错误方法

在计算机使用过程中,遇到诸如“找不到MSVCP120.dll”或“MSVCP120.dll丢失”的错误提示并不罕见。这类问题往往会导致某些应用程序无法正常运行,给用户带来困扰。本文旨在详细阐述MSVCP120.dll文件的重要性、其丢失的可能原因,以及解决方法&a…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之五 简单进行车牌检测和识别

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之五 简单进行车牌检测和识别 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之五 简单进行车牌检测和识别 一、简单介绍 二、简单进行车牌检测和识别实现原理 …

ACRN Intel推出的虚拟机是啥样的?

前言 ACRN作为Intel为工控领域推出的一个小型化的虚拟机,它的特点主要有这么几个: 1.针对Intel的芯片做了非常强的优化 2.RT-VM实时虚拟机的实时性很好 3.CACHE缓存技术发挥的好 4.TCC技术 / 当然不是所有intel的芯片都支持,&#xff0c…

OKCC搭建配置什么样的服务器合适

OKCC呼叫中心系统是一种采用软硬件结合的架构方式、及分布式的IP技术,从多角度为企业提供整合的一体化解决方案。因此,搭建OKCC呼叫中心系统所使用的服务器应该满足以下几点要求: 稳定性:服务器需要具有较高的稳定性和可靠性&…

应用部署tomcat的三种方式

由于一直在用springboot框架,集成了tomcat,快忘记如何单独部署tomcat了,以下,记录一下: 部署tomcat有三种方式: 一、方式一:将war包丢进webapps 这是最简单粗暴的方式:将web工程打…

平均月薪超4.6万!AI领域重磅课程汇总,哈佛,斯坦福,微软,谷歌等出品!

2023年底,由脉脉高聘人才智库发布的《2023泛人工智能人才洞察》报告显示,2023年前八个月内新发布的AI岗位平均月薪超过了4.6万元,而且人才供不应求,甚至出现了5个岗位争夺2个人才的情况。 本文章整理了10项来自全球各高校与知名企…

语音聊天app软件、语音房软件开发

最近我们收到了众多客户咨询,他们都对语音聊天app非常感兴趣! 语音聊天app,在线组CP,一起连麦聊天、唱歌、打游戏,年轻人非常喜欢的语音社交软件,可以语音通话、多人语音房聊天、发布动态、会员充值等功能.大家可以在虚拟世界里快乐社交! 里面还有好玩的互动小游戏,帮助客户增…

[Meachines][Easy]Bizness

Main $ nmap -p- 10.10.11.252 --min-rate 1000 $ dirsearch -u https://bizness.htb/ $ whatweb https://bizness.htb/control/login 存在一个未授权的RCE $ git clone https://github.com/jakabakos/Apache-OFBiz-Authentication-Bypass.git $ cd Apache-OFBiz-Authenticat…

【webrtc】m98 RoundRobinPacketQueue的优先级处理

m98 代码 PacedSender::EnqueuePackets 的调用者可能是多个地方,所以这个要加锁保护。RoundRobinPacketQueue 本身是没有锁的发现m98和新版本不同,参考:【webrtc】m114自己实现的PrioritizedPacketQueuepush和pop都是RtpPacketToSend 但是实际上,内部是封装为QueuedPacket 处…

【笔试强训】牛牛快递

链接:牛牛的快递_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/41b42e7b3c3547e3acf8e90c41d98270?tpId290&tqId39852&ru/exam/oj描述 牛牛正在寄快递,他了解到快递在 1kg 以内的按起步价 20 元计算,超出部分…

基于RT-Thread的智能家居助手

一、项目简介 智能家居助手主要基于RT-Thread开发的,该系统主要分为语音子系统,环境监测子系统,智能控制子系统,智能网关子系统,音乐播放器,云端以及应用软件七大部分。语音子系统可通过语音进行人机交互来…

基于51单片机的温度、烟雾、防盗、GSM上报智能家居系统

基于51单片机的智能家居系统 (仿真+程序+原理图+设计报告) 功能介绍 具体功能: 1.DS18B20检测温度,MQ-2检测烟雾、ADC0832实现模数转换; 2.按键可以设置温度、烟雾浓度阈值&#x…

Linux加强篇-Shell命令脚本

目录 ⛳️推荐 编写Shell脚本 编写简单的脚本 接收用户的参数 判断用户的参数 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 编写Shell脚本 Shell脚本命令的工作方式有下面…

Hdu1350 Taxi Cab Scheme 【最小路径覆盖】

Taxi Cab Scheme 题意 有一张边长不超过 200 200 200 的网格图,有若干个乘客, 乘客 i i i 的需求是: h h : m m , ( a , b ) , ( c , d ) hh:mm, (a,b) , (c, d) hh:mm,(a,b),(c,d),意为他需要在 h h 时 m m 分 hh时mm分 hh时…

Kibana安装部署(Linux)

Kibana是Elasticsearch的开源可视化工具,与存储在Elasticsearch中的数据进行交互。 1. 下载软件 这里使用的Elasticsearch的版本是7.12.0,所以kibana选择同样的7.12.0版本。 官网下载地址:https://www.elastic.co/cn/downloads/past-releas…