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...会不会哪天我的这个目录就出现在培训机构的目录上了... 目前实战比较少(要是 ...
随机推荐
- x64汇编第二讲,复习x86汇编指令格式,学习x64指令格式
目录 x64汇编第二讲,复习x86汇编指令格式,学习x64指令格式 一丶x86指令复习. 1.1什么是x86指令. 1.2 x86与x64下的通用寄存器 1.3 OpCode 1.4 7种寻址方式 二 ...
- AMPPZ2014 The Captain
传送门 BZOJdown Solution 比较妙,考虑按照给出的式子,只有\(x\)相邻或者\(y\)相邻的才会走,不然一定会走到相邻的再走\(x\)或\(y\),所以直接排序两边然后最短路即可. ...
- PSQLException: An I/O error occurred while sending to the backend.
postgresql批量新增数据时,批量插入的数据量太大了,造成了IO异常 只能把这么多数据先进行分割,再批量插入,但是感觉这种方式不是最优解,先暂时顶着,具体List分割方式如下: package ...
- NSGA-II算法学习
什么是支配: 支配就是统治,在各方面都优于其余个体 如个体i支配个体j,就说明个体i在所有目标函数的表现上都不差于个体j,并且至少在一个目标上优于个体j: 什么是非支配: 非支配就是个体在种群中是最优 ...
- Redis内存数据库
remote dictionary server 远程字典服务器 Redis默认支持16个数据库,不同的应用应该使用不同的Redis实例存储数据. 支持数据类型:字符串,哈希散列,列表,集合,有序 ...
- 如何保证MQ的顺序性?比如Kafka
三.如何保证消息的顺序性 1. rabbitmq 拆分多个queue,每个queue一个consumer,就是多一些queue而已,确实是麻烦点:或者就一个queue但是对应一个consumer,然后 ...
- mybatis在sql中的CDATA区
示例 <if test="startTime != null"> <![CDATA[ AND rra.create_time >= #{startTime} ...
- Gaze Estimation学习笔记(2)-It's Written All Over Your Face Full-Face Appearance-Based Gaze Estimation
目录 前言 将完整脸部图像作为输入的空间权重CNN方法 将full-face image作为输入的原因 加入空间权重的CNN方法 基础CNN结构 空间权重机制 实验及分析 头部姿态.面部表现视线方向的 ...
- Spark2.x(六十三):(Spark2.4)Driver如何把Task(闭包等)分配给Executor
在Spark中一个appliation可能包含多个job,每个job都是由SparkContext#runJob(...)触发的,一个Job下包含1个或多个Stage,Job的最后一个stage为Re ...
- 《自然语言理解(Natural Language Understanding)》(2016-03-17)阅读笔记
原文链接:https://yq.aliyun.com/articles/8301 作者:李永彬 发布时间:2016-03-17 16:37:47 自然语言理解(Natural Language Und ...