如果你还想从头学起Pytest,可以看看这个系列的文章哦!

https://www.cnblogs.com/poloyy/category/1690628.html

前言

  • 平常在做功能测试的时候,经常会遇到某个模块不稳定,偶然会出现一些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= --count= 10fixture_request.py

重复测试直到失败(重点!)

  • 如果需要验证偶现问题,可以一次又一次地运行相同的测试直到失败,这个插件将很有用
  • 可以将pytest的 -x 选项与pytest-repeat结合使用,以强制测试运行程序在第一次失败时停止
py.test --count= -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设置多少,这些测试始终仅运行一次,并显示警告

最新文章

  1. NET Core项目定义Item Template
  2. 命令行下 mysql 不是内部或外部命令排查方法
  3. MongoDB 副本集管理(不定时更新)
  4. phpcms V9 数据模型基类
  5. BZOJ 1853 幸运数字
  6. php socket编程参考资料
  7. KVC 和 KVO 简单总结
  8. php三个执行命令函数
  9. tr删除替换详解
  10. Keil报错failed to execute 'd:\Keil\C51\BIN\C51.EXE'
  11. mac上使用crontab周期性执行python脚本
  12. hdu 1542 线段树扫描(面积)
  13. Attempted to serialize java.lang.Class: org.hibernate.proxy.HibernateProxy. Forgot to register a type adapter?
  14. Python交互图表可视化Bokeh:6. 轴线| 浮动| 多图表
  15. BZOJ.2199.[USACO2011 Jan]奶牛议会(2-SAT)
  16. Win8交互UX——键盘交互
  17. IntelliJ IDEA使用心得之快捷键篇
  18. ubuntu下gcc-avr安装
  19. python and 我爱自然语言处理
  20. centos 7 安装mysql5.6rpm格式

热门文章

  1. docker的安装,自己写了一个安装docker的脚本,辅助做docker安装的实验(ubuntu)
  2. Object.keys()方法
  3. 机器学习——详解经典聚类算法Kmeans
  4. 2020年IOS超级签最新实现原理详解
  5. react 脚手架装后 运行eject报错 的 正确运行方式
  6. [Alg] 文本匹配-单模匹配-KMP
  7. 网络安全从入门到精通(第一章-2)快速自建web安全测试环境
  8. Mol. Cell. Proteomics | 糖蛋白基因组学:一种常见的基因多态性影响人血清胎球蛋白/α-2-HS-糖蛋白的糖基化形式
  9. 基于openshift+华为对象存储的CSI开发
  10. C语言学生管理系统