Pytest插件pytest-repeat重复执行
Pytest插件pytest-repeat重复执行
安装
pip install pytest-repeat
doc
- 2020年10月31日最后一次更新
- 最新版本0.9.1
- 其他没啥内容,就一些简单的使用方法,也在侧面上说明这个插件是比较简单的
使用方法
第一种用法:装饰器 @pytest.mark.repeat(次数)
示例代码
import pytest
@pytest.mark.repeat(3)
def test_a01():
assert 1==2 if __name__ == '__main__':
pytest.main(['-sv',__file__])
示例输出
collecting ... collected 3 items test_demo.py::test_a01[1-3] FAILED
test_demo.py::test_a01[2-3] FAILED
test_demo.py::test_a01[3-3] FAILED ================================== FAILURES ===================================
________________________________ test_a01[1-3] ________________________________ @pytest.mark.repeat(3)
def test_a01():
> assert 1==2
E assert 1 == 2 test_demo.py:4: AssertionError
________________________________ test_a01[2-3] ________________________________ @pytest.mark.repeat(3)
def test_a01():
> assert 1==2
E assert 1 == 2 test_demo.py:4: AssertionError
________________________________ test_a01[3-3] ________________________________ @pytest.mark.repeat(3)
def test_a01():
> assert 1==2
E assert 1 == 2 test_demo.py:4: AssertionError
=========================== short test summary info ===========================
FAILED test_demo.py::test_a01[1-3] - assert 1 == 2
FAILED test_demo.py::test_a01[2-3] - assert 1 == 2
FAILED test_demo.py::test_a01[3-3] - assert 1 == 2
============================== 3 failed in 0.10s ==============================从结果看,重复插件的使用会让你的用例变成多个(这点未必是你想要的,要注意)
第二种用法:命令行参数
语法
pytest --count=3 test_demo.py
示例代码
import pytest
def test_a01():
assert 1==2 if __name__ == '__main__':
pytest.main(['-sv','--count=5',__file__])
输出跟上面第一个用法的是一样的
但装饰器是要装饰在每个测试用例上的,而命令行的做法就是一把梭,全部运行多次。
第三种用法:结合repeat-scope运行
如果我们要对多个测试函数进行重复运行,要么加多个装饰器,要么用命令行参数
但是上述两种方法都是A重复,B重复这样,无法做到AB-AB-AB的模式
如果要实现组合重复运行,那就要用到该插件提供的另外一个参数--repeat-scope
--repeat-scope类似于pytest fixture的scope参数,--repeat-scope也可以设置参数:
session,module,class或者function(默认值)function(默认)范围针对每个用例重复执行,再执行下一个用例class以class为用例集合单位,重复执行class里面的用例,再执行下一个module以模块为单位,重复执行模块里面的用例,再执行下一个session重复整个测试会话,即所有收集的测试执行一次,然后所有这些测试再次执行等等
示例代码1(不加repeat-scope):A运行2次,B运行2次
import pytest def test_a():
assert 1==2 def test_b():
assert 1==2 if __name__ == '__main__':
pytest.main(['-sv','--count=2',__file__])
#运行结果 AABB
=========================== short test summary info ===========================
FAILED test_demo.py::test_a[1-2] - assert 1 == 2
FAILED test_demo.py::test_a[2-2] - assert 1 == 2
FAILED test_demo.py::test_b[1-2] - assert 1 == 2
FAILED test_demo.py::test_b[2-2] - assert 1 == 2
============================== 4 failed in 0.11s ==============================
示例代码(加repeat-scope):A-B运行2次
import pytest def test_a():
assert 1==2 def test_b():
assert 1==2 if __name__ == '__main__':
pytest.main(['-sv','--count=2','--repeat-scope=module',__file__]) # ABAB
=========================== short test summary info ===========================
FAILED test_demo.py::test_a[1-2] - assert 1 == 2
FAILED test_demo.py::test_b[1-2] - assert 1 == 2
FAILED test_demo.py::test_a[2-2] - assert 1 == 2
FAILED test_demo.py::test_b[2-2] - assert 1 == 2
============================== 4 failed in 0.11s ==============================
如果--repeat-scope=session在此处的效果是一样的
这个插件的--repeat-scope=并没有同步fixture的scope(多了个package)
说在最后
Pytest-repeat.py的部分源码
def pytest_addoption(parser):
parser.addoption(
'--count',
action='store',
default=1,
type=int,
help='Number of times to repeat each test') parser.addoption(
'--repeat-scope',
action='store',
default='function',
type=str,
choices=('function', 'class', 'module', 'session'),
help='Scope for repeating tests')
Pytest插件pytest-repeat重复执行的更多相关文章
- linux命令之 repeat 重复执行命令
$ vim ~/.bashrc function repeat() { number=$1 shift echo $@ for n in $(seq $number); do $@ done } $ ...
- 重复执行用例(pytest-repeat)
前言 平常在做功能测试的时候,经常会遇到某个模块不稳定,偶然会出现一些bug,对于这种问题我们会针对此用例反复执行多次,最终复现出问题来.自动化运行用例时候,也会出现偶然的bug,可以针对单个用例,或 ...
- Pytest系列(13)- 重复执行用例插件之pytest-repeat的详细使用
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 平常在做功能测试的时候,经常 ...
- Pytest系列(十三)- 重复执行之pytest-repeat的使用
写在前面 这个插件,可以帮助我们很好的解决自动化测试过程中的一些偶线性bug难以复现的问题,但前提是,当前自动化脚本是独立的,不依赖任何其他脚本.个人觉得还是失败重运行的一种体现,就和TestNG是一 ...
- pytest文档27-pytest分布式执行(pytest-xdist)
前言 平常我们手工测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟.如果一个测试人员执行需要1000分钟才能执行完,当项目非常紧急的时候, 我们会用测试人力成本换取时间成本,这个时候多找 ...
- Pytest(6)重复运行用例pytest-repeat
前言 平常在做功能测试的时候,经常会遇到某个模块不稳定,偶然会出现一些bug,对于这种问题我们会针对此用例反复执行多次,最终复现出问题来. 自动化运行用例时候,也会出现偶然的bug,可以针对单个用例, ...
- pytest文档58-随机执行测试用例(pytest-random-order)
前言 通常我们认为每个测试用例都是相互独立的,因此需要保证测试结果不依赖于测试顺序,以不同的顺序运行测试用例,可以得到相同的结果. pytest默认运行用例的顺序是按模块和用例命名的 ASCII 编码 ...
- Pytest测试框架(一):pytest安装及用例执行
PyTest是基于Python的开源测试框架,语法简单易用,有大量的插件,功能非常多.自动检测测试用例,支持参数化,跳过特定用例,失败重试等功能. 安装 pip install -U pytest ...
- Pytest(16)随机执行测试用例pytest-random-order
前言 通常我们认为每个测试用例都是相互独立的,因此需要保证测试结果不依赖于测试顺序,以不同的顺序运行测试用例,可以得到相同的结果. pytest默认运行用例的顺序是按模块和用例命名的 ASCII 编码 ...
- 二、为什么要选用pytest以及 pytest与unittest比较
为什么要选择pytest,我看中的如下: 写case,不需要像unittest那样,创建测试类,继承unittest.TestCase pytest中的fixture(类似于setUp.tearDow ...
随机推荐
- onps栈使用说明(2)——ping、域名解析等网络工具测试
1. ping测试 协议栈提供ping工具,其头文件为"net_tools/ping.h",将其include进你的目标系统中即可使用这个工具. -- #include " ...
- 最新的ZooKeeper GUI
Zookeeper 是一个分布式的.开源的程序协调服务,是 hadoop 项目下的一个子项目.他提供的主要功 能包括:配置管理.名字服务.分布式锁.集群管理. 平时用zkCli.sh进行管理不免有点不 ...
- C#面试题基础
1.什么是GAC,他的作用是什么? 我的这篇文章有详细的介绍 https://www.cnblogs.com/zxtang/p/14313273.html 2.描述一个被protected inter ...
- JUC学习笔记——共享模型之不可变
JUC学习笔记--共享模型之不可变 在本系列内容中我们会对JUC做一个系统的学习,本片将会介绍JUC的不可变内容 我们会分为以下几部分进行介绍: 不可变案例 不可变设计 模式之享元 原理之final ...
- Hashcat使用指南
Hashcat使用指南 免责声明: 0×01 Hashcat破解linux shadow的密码-首先了解shadow文件到底是什么? 0×02 hashcat的使用 参数补充: -m 参数 -a 参数 ...
- phpexcel 上传
<?php require_once(ROOTPATH . "inc/PHPExcel/PHPExcel.class.php");//PHPExcel//获取数据 $objP ...
- Linux系统安装 tftp服务 NFS服务
安装tftp服务 安装 sudo apt-get install tftp-hpa tftpd-hpa 配置文件 # /etc/default/tftpd-hpa TFTP_USERNAME=&quo ...
- java集合类 collection接口,List集合
java集合类:collection接口,List集合 在java.util包中提供了一些集合类,集合类又被称为容器,常用的有List集合,Set集合,Map集合.下面将介绍collection接口和 ...
- java环境改完版本后无效
把C盘program files和X86两个文件夹中的Common Files中的Oracle文件夹删掉 这是jdk安装时自动生成的两个文件夹,记录了jdk的版本和路径,即使你的jdk安装路径不在C盘 ...
- win7使用onedrive右键托盘图标中文不显示问题
前言 win7 用的 onedrive不能在微软官网下载,用不了,所以需要下载 win7可以使用的版本. onedrive_for_win7.exe 解决问题 重启电脑解决 其他 我看贴吧说是文本放大 ...