【Pytest学习】重复执行用例插件之pytest-repeat的详细使用
前言
- 平常在做功能测试的时候,经常会遇到某个模块不稳定,偶然会出现一些bug,对于这种问题我们会针对此用例反复执行多次,最终复现出问题来
- 自动化运行用例时候,也会出现偶然的bug,可以针对单个用例,或者针对某个模块的用例重复执行多次
环境前提
- Python 2.7、3.4+或PyPy
- py.test 2.8或更高版本
安装插件
pip3 install pytest-repeat -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
快速入门
结合之前讲到的失败重跑、输出html报告插件来敲命令行
两种方式皆可,等号或空格
- count=2
- count 2
pytest --html=report.html --self-contained-html -s --reruns=5 --count=2 10fixture_request.py
重复测试直到失败(重点!)
- 如果需要验证偶现问题,可以一次又一次地运行相同的测试直到失败,这个插件将很有用
- 可以将pytest的 -x 选项与pytest-repeat结合使用,以强制测试运行程序在第一次失败时停止
py.test --count=1000 -x test_file.py
小栗子
def test_example():
import random
flag = random.choice([True, False])
print(flag)
assert flag
执行命令
pytest -s --count 5 -x 13repeat.py
执行结果
@pytest.mark.repeat(count)
如果要在代码中将某些测试用例标记为执行重复多次,可以使用 @pytest.mark.repeat(count)
@pytest.mark.repeat(5)
def test_repeat():
print("测试用例执行")
执行命令
pytest -s 13repeat.py
执行结果
--repeat-scope
命令行参数
作用:可以覆盖默认的测试用例执行顺序,类似fixture的scope参数
- function:默认,范围针对每个用例重复执行,再执行下一个用例
- class:以class为用例集合单位,重复执行class里面的用例,再执行下一个
- module:以模块为单位,重复执行模块里面的用例,再执行下一个
- session:重复整个测试会话,即所有测试用例的执行一次,然后再执行第二次
案例一:class
class Test_repeat:
def test_repeat3(self):
print("测试用例执行333")
class Test_repeat2:
def test_repeat3(self):
print("测试用例执行444")
执行命令
pytest -s --count=2 --repeat-scope=class 13repeat.py
执行结果
案例二:module
def test_repeat1():
print("测试用例执行111")
def test_repeat2():
print("测试用例执行222")
class Test_repeat:
def test_repeat3(self):
print("测试用例执行333")
执行命令
pytest -s --count=2 --repeat-scope=module 13repeat.py
执行结果
兼容性问题
pytest-repeat不能与unittest.TestCase测试类一起使用。无论--count设置多少,这些测试始终仅运行一次,并显示警告
转载:https://www.cnblogs.com/poloyy/p/12691240.html
作者:gtea
博客地址:https://www.cnblogs.com/gtea
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
2020-12-06 【Python总结】用Pycharm实现鼠标滚轮控制字体大小的方法