Pytest学习笔记11-重复执行用例插件pytest-repeat
前言
我们在平时做测试的时候,经常会遇到一些偶现的bug,通常我们会多次执行来复现此类bug,那么在自动化测试的时候,如何多次运行某个或某些用例呢,我们可以使用pytest-repeat这个插件来帮助我们重复的去执行用例
pytest-repeat插件
插件安装
pip命令安装
pip install pytest-repeat
使用实例
上代码
def test_demo1():
    print("执行测试用例1")
def test_demo2():
    print("执行测试用例2")
使用命令  pytest -s --count 5  test_demo.py执行
运行结果如下

可以看到,用例被重复执行了5次
重复测试直到失败
当我们验证偶现的问题时,需要不停的重复执行用例,直到用例失败
可以将pytest的 -x 选项与pytest-repeat结合使用,以强制测试运行程序在第一次失败时停
上代码
def test_example():
    import random
    flag = random.randint(1,100)
    print(flag)
    assert flag != 8
使用命令  pytest --count 5 -x  test_demo.py执行
运行结果如下

可以看到,在运行了55次后,用例执行失败
标记要重复多次的测试
如果要在代码中将某些测试用例标记为执行重复多次,可以使用 @pytest.mark.repeat(count)
上代码
import pytest
def test_repeat1():
    print("测试用例1执行")
@pytest.mark.repeat(5)
def test_repeat2():
    print("测试用例2执行")
def test_repeat3():
    print("测试用例3执行")
使用命令  pytest -s test_demo.py执行
运行结果如下

可以看到,用例2被执行了5次
--repeat-scope
作用:类似于pytest fixture的scope参数,--repeat-scope也可以设置参数: session , module,class或者function(默认值)
- function:默认,范围针对每个用例重复执行,再执行下一个用例
 - class:以class为用例集合单位,重复执行class里面的用例,再执行下一个
 - module:以模块为单位,重复执行模块里面的用例,再执行下一个
 - session:重复整个测试会话,即所有测试用例的执行一次,然后再执行第二次
 
重复执行class中的用例
上代码
class Test1:
    def test_repeat1(self):
        print("测试用例执行1")
class Test2:
    def test_repeat2(self):
        print("测试用例执行2")
使用命令   pytest -s --count=2 --repeat-scope=class test_demo.py执行
运行结果如下

可以看到,两个测试类都执行了2次
重复执行module中的用例
上代码
class Test1:
    def test_repeat1(self):
        print("测试用例执行1")
class Test2:
    def test_repeat2(self):
        print("测试用例执行2")
def test_repeat3():
    print("测试用例执行3")
使用命令   pytest -s --count=2 --repeat-scope=module test_demo.py执行
运行结果如下

注意
pytest-repeat不能与unittest.TestCase测试类一起使用。无论--count设置多少,这些测试始终仅运行一次,并显示警告
整理参考
Pytest学习笔记11-重复执行用例插件pytest-repeat的更多相关文章
- Pytest学习笔记(二) 用例执行规则
		
在用pytest执行用例时,可以按照如下场景来执行 1.执行目录及其子目录下的所有用例 pytest filename\ 2.执行某一个py文件下的用例 pytest filename.py 3.-k ...
 - Pytest系列(13)- 重复执行用例插件之pytest-repeat的详细使用
		
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 平常在做功能测试的时候,经常 ...
 - [转载]pytest学习笔记
		
pytest学习笔记(三) 接着上一篇的内容,这里主要讲下参数化,pytest很好的支持了测试函数中变量的参数化 一.pytest的参数化 1.通过命令行来实现参数化 文档中给了一个简单的例子, ...
 - 并发编程学习笔记(11)----FutureTask的使用及实现
		
1. Future的使用 Future模式解决的问题是.在实际的运用场景中,可能某一个任务执行起来非常耗时,如果我们线程一直等着该任务执行完成再去执行其他的代码,就会损耗很大的性能,而Future接口 ...
 - Spring 源码学习笔记11——Spring事务
		
Spring 源码学习笔记11--Spring事务 Spring事务是基于Spring Aop的扩展 AOP的知识参见<Spring 源码学习笔记10--Spring AOP> 图片参考了 ...
 - Ext.Net学习笔记11:Ext.Net GridPanel的用法
		
Ext.Net学习笔记11:Ext.Net GridPanel的用法 GridPanel是用来显示数据的表格,与ASP.NET中的GridView类似. GridPanel用法 直接看代码: < ...
 - SQL反模式学习笔记11  限定列的有效值
		
目标:限定列的有效值,将一列的有效字段值约束在一个固定的集合中.类似于数据字典. 反模式:在列定义上指定可选值 1. 对某一列定义一个检查约束项,这个约束不允许往列中插入或者更新任何会导致约束失败的值 ...
 - golang学习笔记11  golang要用jetbrain的golang这个IDE工具开发才好
		
golang学习笔记11 golang要用jetbrain的golang这个IDE工具开发才好 jetbrain家的全套ide都很好用,一定要dark背景风格才装B 从File-->s ...
 - Spring MVC 学习笔记11 —— 后端返回json格式数据
		
Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...
 
随机推荐
- 结合JVM   浅谈Java 类加载器(Day_03)
			
所谓错过,不是错了,而是过了. 什么是JAVA类加载? Class对象由JVM自动产生,每当一个类被加载时,JVM就自动为其生成一个Class对象,通过Class对象可以获得类的相关信息.将类信息读取 ...
 - Redis限制一键登录次数
			
一.产生背景 之前的随笔提到过项目中写了一键登录功能.上线后除了有时候网络波动会导致登陆失败,其他情况一直稳如老狗 しかし,邮件看到有人恶意刷一键登录,这年头闲的人可真闲啊, 只能思考如何搞一搞 二. ...
 - THINKPHP_(1)_修改TP源码,支持对中文字符串按拼音进行排序。
			
问题:TP从服务器数据中取出的collection数据,当进一步在网页中进行分页显示时,需要调用order函数,实现类似如下图的排序. 当点击页面中的相关内容时,实现对服务器数据进行重排,就要调用TP ...
 - Nucleus-SE迁移:未实现的设施和兼容性
			
Nucleus-SE迁移:未实现的设施和兼容性 Nucleus SE migration: Unimplemented facilities and compatibility Nucleus SE的 ...
 - C语言真正的编译过程
			
说实话,很多人做了很久的C/C++,也用了很多IDE,但是对于可执行程序的底层生成一片茫然,这无疑是一种悲哀,可以想象到大公司面试正好被问到这样的问题,有多悲催不言而喻,这里正由于换工作的缘故,所以打 ...
 - QT环境变量设置
			
首先找到自己对应的目录 我的如图 还有一个路径 将这两个路径添加到系统变量的Path中
 - 1738. 找出第 K 大的异或坐标值
			
2021-05-19 LeetCode每日一题 链接:https://leetcode-cn.com/problems/find-kth-largest-xor-coordinate-value/ 标 ...
 - 「题解」小 R 打怪兽 monster
			
本文将同步发布于: 洛谷博客: csdn: 博客园: 简书. 题目 题目描述 小 R 最近在玩一款游戏.在游戏中,小 R 要依次打 \(n\) 个怪兽,他需要打败至少 \(k\) 个怪兽才能通关.小 ...
 - 【NX二次开发】判断面是否相切,相切面。
			
判断面是否相切,相切面. 用到的函数: UF_MODL_ask_minimum_dist 获取两个对象之间的最短距离,以及点坐标 UF_MODL_ask_face_parm 给定一个参考点,返回曲面上 ...
 - 【NX二次开发】常用的标准对话框
			
1.uc1601 单按钮模态对话框 1 //来自"王牌飞行员_里海"的测试源码(qq群753801561) 2 extern DllExport void ufusr(char * ...