前言

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

最新文章

  1. bzoj3631树链剖分
  2. django--forms
  3. Binary Tree Longest Consecutive Sequence
  4. 【fedora】制作安装u盘
  5. MVC引用CSS文件の正确姿势
  6. [转] Form表单中method="post/get'的区别
  7. JavaScript编程:浏览器对象模型BOM
  8. HDU 5963 博弈
  9. unset与unlink
  10. 学习RocketMQ (一) 安装并且启动MQ
  11. 不依赖jstack的java 线程dump和死锁检查工具
  12. 3.3.2 PCI设备对不可Cache的存储器空间进行DMA读写
  13. QT窗体的小技巧
  14. LeetCode算法题-Largest Number At Least Twice of Others(Java实现)
  15. volatile&synchronized&diff
  16. PS快速祛除脸上小雀斑
  17. HyperLedger Fabric 1.0的Transaction处理流程
  18. 浅谈 js中parseInt函数的解析
  19. MOBA项目问题记录
  20. SQL Server 常用内置函数

热门文章

  1. HDU 3746 Cyclic Nacklace(KMP找循环节)
  2. SimpleCV install and "You need the python image library to save by filehandle"
  3. [你必须知道的.NET]第十八回:对象创建始末(上)
  4. 「Ionic」WebStorm的使用錯誤-
  5. APS高级计划排程系统应该支持的企业应用场景
  6. 三十三 StringIO和BytesIO
  7. thinkphp5.0Traits引入
  8. ref:Java安全之反序列化漏洞分析(简单-朴实)
  9. 配置自己的ubuntu
  10. python爬虫实战(六)--------新浪微博(爬取微博帐号所发内容,不爬取历史内容)