pytest_参数化parametrize
前言
pytest.mark.parametrize装饰器可以实现测试用例参数化。
parametrizing
1.这里是一个实现检查一定的输入和期望输出测试功能的典型例子
import pytest @pytest.mark.parametrize(
"test_input, expected",
[
("3+5", 8),
("5+7", 12),
("9/3", 3),
("6*9", 42)
]
)
def test_eval(test_input, expected):
print("______测试用例_______")
assert eval(test_input) == expected if __name__ == '__main__':
pytest.main(["-s", "Parametrize_01.py"])
运行结果
============================= test session starts =============================
platform win32 -- Python 3.6.2, pytest-3.7.4, py-1.6.0, pluggy-0.7.1
rootdir: D:\python_auto\s14\pytest_learn, inifile:
collected 4 items Parametrize_01.py ______测试用例_______
.______测试用例_______
.______测试用例_______
.______测试用例_______
F ================================== FAILURES ===================================
______________________________ test_eval[6*9-42] ______________________________ test_input = '6*9', expected = 42 @pytest.mark.parametrize(
"test_input, expected",
[
("3+5", 8),
("5+7", 12),
("9/3", 3),
("6*9", 42)
]
)
def test_eval(test_input, expected):
print("______测试用例_______")
> assert eval(test_input) == expected
E AssertionError: assert 54 == 42
E + where 54 = eval('6*9') Parametrize_01.py:18: AssertionError
===================== 1 failed, 3 passed in 0.07 seconds ======================
在这个例子中设计的,只有一条输入/输出值的简单测试功能。和往常一样
函数的参数,你可以在运行结果看到在输入和输出值
2.它也可以标记单个测试实例在参数化,例如使用内置的mark.xfail
import pytest @pytest.mark.parametrize(
"test_input, expected",
[
("3+5", 8),
("5+7", 12),
("9/3", 3),
pytest.param("6*9", 42,
marks=pytest.mark.xfail),
]
)
def test_eval(test_input, expected):
print("______测试用例_______")
assert eval(test_input) == expected if __name__ == '__main__':
pytest.main(["-s", "Parametrize_02.py"])
运行结果:
============================= test session starts =============================
platform win32 -- Python 3.6.2, pytest-3.7.4, py-1.6.0, pluggy-0.7.1
rootdir: D:\python_auto\s14\pytest_learn, inifile:
collected 4 items Parametrize_02.py ______测试用例_______
.______测试用例_______
.______测试用例_______
.______测试用例_______
x ===================== 3 passed, 1 xfailed in 0.10 seconds =====================
标记为失败的用例就不运行了,直接跳过显示xfailed
参数组合
1.若要获得多个参数化参数的所有组合,可以堆叠参数化装饰器
import pytest
@pytest.mark.parametrize("x", [0,1])
@pytest.mark.parametrize("y", [2,3])
def test_eval(x, y):
print("______测试用例_______")
print("测试数据组合: x -> %s, y -> %s"% (x, y))
if __name__ == '__main__':
pytest.main(["-s", "Parametrize_03.py"])
运行结果
============================= test session starts =============================
platform win32 -- Python 3.6.2, pytest-3.7.4, py-1.6.0, pluggy-0.7.1
rootdir: D:\python_auto\s14\pytest_learn, inifile:
collected 4 items Parametrize_03.py ______测试用例_______
测试数据组合: x -> 0, y -> 2
.______测试用例_______
测试数据组合: x -> 1, y -> 2
.______测试用例_______
测试数据组合: x -> 0, y -> 3
.______测试用例_______
测试数据组合: x -> 1, y -> 3
. ========================== 4 passed in 0.05 seconds ===========================
这将运行测试,参数设置为x=0/y=2,x=1/y=2,x=0/y=3,x=1/y=3组合参数。
作者:含笑半步颠√
博客链接:https://www.cnblogs.com/lixy-88428977
声明:本文为博主学习感悟总结,水平有限,如果不当,欢迎指正。如果您认为还不错,欢迎转载。转载与引用请注明作者及出处。
pytest_参数化parametrize的更多相关文章
- pytest 8 参数化parametrize
pytest.mark.parametrize装饰器可以实现用例参数化 1.以下是一个实现检查一定的输入和期望输出测试功能的典型例子 import pytest @pytest.mark.parame ...
- 预期结果 参数化parametrize
1.pytest.mark.parametrize装饰器可以实现测试用例参数化. 2.实例: import pytest @pytest.mark.parametrize("req,expe ...
- pytest_参数化3
import pytesttest_user_data=[ {'user':'linda','password':'8888'}, {'user':'servenruby','password':'1 ...
- pytest参数化 parametrize
pytest.mark.parametrize装饰器可以实现测试用例参数化 parametrizing 1.这里是一个实现检查一定的输入和期望输出测试功能的典型例子 # content of test ...
- Pytest 系列(28)- 参数化 parametrize + @allure.title() 动态生成标题
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 参数化 @pytest.ma ...
- Pytest_参数化(10)
pytest参数化有两种方式: mark的parametrize标记:@pytest.mark.parametrize(变量名,变量值),其中变量值类型为列表.元组或其它可迭代对象. fixture的 ...
- pytest_参数化之3*3
import pytesttest_user_data1=[{'user':'linda','password':'888888'}, {'user':'servenruby','password': ...
- pytest文档8-参数化(parametrize)结合allure.title()生成不同标题报告
参数化parametrize 先看一个简单的pytest参数化案例演示test_a.py # test_a.py import pytest import allure def login(usern ...
- 比培训机构还详细的 Python 学习路线,你信吗 0^0
前言 这其实是将自己写的文章进行一个总结分类,并不代表最佳学习路线 会不断更新这篇文章...没链接的文章正在编写ing...会不会哪天我的这个目录就出现在培训机构的目录上了... 目前实战比较少(要是 ...
随机推荐
- nginx.conf 配置解析之 events配置
worker_connections 1024; 定义每个work_process同时开启的最大连接数,即允许最多只能有这么多连接. accept_mutex on; 当某一个时刻只有一个网络连接请求 ...
- python 判断操作系统以及操作系统版本号
>>> import platform >>> platform.platform() 'Darwin-17.7.0-x86_64-i386-64bit' > ...
- shell 给文件每一行都添加指定字符串
[admin@localhost file]$ cat file hello hello hello hello hello [admin@localhost file]$ cat test.sh # ...
- (持续更新) C# 面试技术点、常见SQL技术点 和 解决高并发的相关技术
这篇博客 持续更新. 方便小伙伴们学习与面试前的复习
- JVM 最多支持多少个线程?
阅读本文大概需要 2.8 分钟. 原文:www.jb51.net/article/49087.htm McGovernTheory 在 StackOverflow 提了这样一个问题: Java 虚拟机 ...
- [Gamma阶段]第一次Scrum Meeting
Scrum Meeting博客目录 [Gamma阶段]第一次Scrum Meeting 基本信息 名称 时间 地点 时长 第一次Scrum Meeting 19/05/27 大运村寝室6楼 60min ...
- nrm安装和使用--管理你的npm源
为什么要使用nrm 我们知道可以使用npm来管理node包,方便我们来操作管理包的版本和信息. 可是由于国内网络原因,直接使用npm官网镜像下载安装node包,比较耗时间,有时还不成功,所以一般会将镜 ...
- centos7没有ifconfig命令解决办法
输入ifconfig 提示不存在 首先确认下是否是环境变量没有ifconfig 引起. ls /sbin/ifconfig 以上确定了系统是没有安装ifconfig,下面我们来安装 yum i ...
- 【用例篇】Xmind转为csv 导入禅道
用过禅道的都知道,用例维护实在是太不方便了,有人推荐了一种方法,用Xmind先编写用例(思路比较清晰),写好之后借助工具(xmind2testcase)将用例转为CSV格式,之后再导入禅道 参考资料: ...
- java8在Stream的forEach操作时获取index
import java.util.Objects; import java.util.function.BiConsumer; /** * * @author yangzhilong * @dat ...