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 ...
随机推荐
- 西门子 S7200 以太网模块连接组态王方法
北京华科远创科技有限研发的远创智控ETH-YC模块,以太网通讯模块型号有MPI-ETH-YC01和PPI-ETH-YC01,适用于西门子S7-200/S7-300/S7-400.SMART S7-20 ...
- Archlinux+win10双系统扩容Boot/ESP分区
环境 系统:Archlinux + Windowns10 双系统 软件:MiniTool Partition Wizard 免费版 + Diskgenius 免费版 分区:原ESP分区100M 原恢复 ...
- 解决idea查不到插件
http://127.0.0.1:1080
- python报错“AttributeError: 'set' object has no attribute 'items'“
作为才开始学爬虫的萌新,遇到了一个这样的错,很懵逼 后面到网络到处查看大佬的解决方法,才发现headers的请求头部信息有错误,headers是一个字典,不是字符串,所以报错了 原代码 headers ...
- Map / Set / Treeset 取出指定下标index的元素
Treeset 属于 set 集合中的一种数据类型,HashSet 以及LinkedHashSet 原理相同 需求:想直接在Treeset类型下,取出指定下标的元素,但是Set 下没有 get()方 ...
- 201871030136-颜静 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST/ 这个作业要求链接 https://www.cnblogs.com/nwnu- ...
- return true 和 return false 和 return
1.return false:相当于终止符,干了3件事,阻止默认行为,取消事件冒泡,以及停止回调执行立即返回: 2.return:停止回调执行立即返回: 3.return true:相当于执行符,继续 ...
- 用NumPy genfromtxt导入数据
用NumPy genfromtxt导入数据 NumPy provides several functions to create arrays from tabular data. We focus ...
- NVIDIA 认证系统
NVIDIA 认证系统 AI 是这个时代最强大的技术,需要新一代经过调整和测试的计算机来推动其发展. 自 1 月 27 日开始,可从 NVIDIA 合作伙伴处获取用于数据中心的新型加速服务器,推动 A ...
- 狂神说redis笔记(一)
一.Nosql概述 1.单机Mysql时代 90年代,一个网站的访问量一般不会太大,单个数据库完全够用.随着用户增多,网站出现以下问题: 数据量增加到一定程度,单机数据库就放不下了 数据的索引(B+ ...