pytest文档9-参数化parametrize
2024-10-19 01:54:45
前言
pytest.mark.parametrize装饰器可以实现测试用例参数化。
parametrizing
1.这里是一个实现检查一定的输入和期望输出测试功能的典型例子
# content of test_expectation.py
# coding:utf-8
import pytest
@pytest.mark.parametrize("test_input,expected",
[ ("3+5", 8),
("2+4", 6),
("6 * 9", 42),
])
def test_eval(test_input, expected):
assert eval(test_input) == expected
if __name__ == "__main__":
pytest.main(["-s", "test_canshu1.py"])
运行结果
================================== FAILURES ===================================
_____________________________ test_eval[6 * 9-42] _____________________________
test_input = '6 * 9', expected = 42
@pytest.mark.parametrize("test_input,expected",
[ ("3+5", 8),
("2+4", 6),
("6 * 9", 42),
])
def test_eval(test_input, expected):
> assert eval(test_input) == expected
E AssertionError: assert 54 == 42
E + where 54 = eval('6 * 9')
test_canshu1.py:11: AssertionError
===================== 1 failed, 2 passed in 1.98 seconds ======================
在这个例子中设计的,只有一条输入/输出值的简单测试功能。和往常一样
函数的参数,你可以在运行结果看到在输入和输出值
2.它也可以标记单个测试实例在参数化,例如使用内置的mark.xfail
# content of test_expectation.py
import pytest
@pytest.mark.parametrize("test_input,expected", [
("3+5", 8),
("2+4", 6),
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", "test_canshu1.py"])
运行结果:
test_canshu1.py -------开始用例------
.-------开始用例------
.-------开始用例------
x
===================== 2 passed, 1 xfailed in 1.84 seconds =====================
标记为失败的用例,预期结果是失败,实际运行也是失败,显示xfailed
参数组合
1.若要获得多个参数化参数的所有组合,可以堆叠参数化装饰器
import pytest
@pytest.mark.parametrize("x", [0, 1])
@pytest.mark.parametrize("y", [2, 3])
def test_foo(x, y):
print("测试数据组合:x->%s, y->%s" % (x, y))
if __name__ == "__main__":
pytest.main(["-s", "test_canshu1.py"])
运行结果
test_canshu1.py 测试数据组合:x->0, y->2
.测试数据组合:x->1, y->2
.测试数据组合:x->0, y->3
.测试数据组合:x->1, y->3
.
========================== 4 passed in 1.75 seconds ===========================
这将运行测试,参数设置为x=0/y=2,x=1/y=2,x=0/y=3,x=1/y=3组合参数。
---------------------------------pytest结合selenium自动化完整版-------------------------
全书购买地址 https://yuedu.baidu.com/ebook/902224ab27fff705cc1755270722192e4536582b
作者:上海-悠悠 QQ交流群:874033608
也可以关注下我的个人公众号:yoyoketang
最新文章
- bzoj3631树链剖分
- django--forms
- Binary Tree Longest Consecutive Sequence
- 【fedora】制作安装u盘
- MVC引用CSS文件の正确姿势
- [转] Form表单中method=";post/get'的区别
- JavaScript编程:浏览器对象模型BOM
- HDU 5963 博弈
- unset与unlink
- 学习RocketMQ (一) 安装并且启动MQ
- 不依赖jstack的java 线程dump和死锁检查工具
- 3.3.2 PCI设备对不可Cache的存储器空间进行DMA读写
- QT窗体的小技巧
- LeetCode算法题-Largest Number At Least Twice of Others(Java实现)
- volatile&;synchronized&;diff
- PS快速祛除脸上小雀斑
- HyperLedger Fabric 1.0的Transaction处理流程
- 浅谈 js中parseInt函数的解析
- MOBA项目问题记录
- SQL Server 常用内置函数
热门文章
- HDU 3746 Cyclic Nacklace(KMP找循环节)
- SimpleCV install and ";You need the python image library to save by filehandle";
- [你必须知道的.NET]第十八回:对象创建始末(上)
- 「Ionic」WebStorm的使用錯誤-
- APS高级计划排程系统应该支持的企业应用场景
- 三十三 StringIO和BytesIO
- thinkphp5.0Traits引入
- ref:Java安全之反序列化漏洞分析(简单-朴实)
- 配置自己的ubuntu
- python爬虫实战(六)--------新浪微博(爬取微博帐号所发内容,不爬取历史内容)