博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pytest 8 参数化parametrize
阅读量:5324 次
发布时间:2019-06-14

本文共 3472 字,大约阅读时间需要 11 分钟。

pytest.mark.parametrize装饰器可以实现用例参数化

1.以下是一个实现检查一定的输入和期望输出测试功能的典型例子

import pytest@pytest.mark.parametrize("test_input,expected",[("3+5",8),("2+4",6),("6*9",42)])def test_add(test_input,expected):    assert eval(test_input) == expected 结果:成功2个失败1个,但是需要注意的是,@pytest.mark.parametrize("test_input,expected",[("3+5",8),("2+4",6),("6*9",42)])里面的"test_input,expected"一定要和
test_add(test_input,expected)当中的参数名称一致,否则,将会出错。

============================= test session starts ==============================

platform darwin -- Python 2.7.10, pytest-3.6.3, py-1.5.2, pluggy-0.6.0
rootdir: /Users/newcomer/PycharmProjects/error/wuya/pytestDemo, inifile:
plugins: metadata-1.7.0, html-1.19.0, D3-2.0.13, cov-2.5.1, catchlog-1.2.2, allure-adaptor-1.7.10, georaven-17.1.0.170collected 3 items

parametrizing.py ..F

parametrizing.py:9 (test_add[6*9-42])
42 != 54

Expected :54

Actual :42
<Click to see difference>

test_input = '6*9', expected = 42

@pytest.mark.parametrize("test_input,expected",[("3+5",8),("2+4",6),("6*9",42)])

def test_add(test_input,expected):
> assert eval(test_input) == expected
E AssertionError: assert 54 == 42
E + where 54 = eval('6*9')

parametrizing.py:12: AssertionError

[100%]

=================================== FAILURES ===================================

_______________________________ test_add[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_add(test_input,expected):
> assert eval(test_input) == expected
E AssertionError: assert 54 == 42
E + where 54 = eval('6*9')

parametrizing.py:12: AssertionError

================ 1 failed, 2 passed, 1 warnings in 0.08 seconds ================

Process finished with exit code 0

 2.它也可以标记单个测试实例在参数化,例如使用内置的mark.xfail

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 结果:可以看出来,标记为失败的用例就不运行了,直接跳过显示xfailed

============================= test session starts ==============================

platform darwin -- Python 2.7.10, pytest-3.6.3, py-1.5.2, pluggy-0.6.0
rootdir: /Users/newcomer/PycharmProjects/error/wuya/pytestDemo, inifile:
plugins: metadata-1.7.0, html-1.19.0, D3-2.0.13, cov-2.5.1, catchlog-1.2.2, allure-adaptor-1.7.10, georaven-17.1.0.170collected 3 items

parametrizing.py .-------开始用例------

.-------开始用例------
x-------开始用例------

test_input = '6 * 9', expected = 42

@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
E AssertionError: assert 54 == 42
E + where 54 = eval('6 * 9')

parametrizing.py:26: AssertionError

[100%]

 

=============== 2 passed, 1 xfailed in 0.08 seconds ================

Process finished with exit code 0

参数组合:

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)) 结果: 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组合参数。

转载于:https://www.cnblogs.com/peiminer/p/9507111.html

你可能感兴趣的文章
安装Endnote X6,但Word插件显示的总是Endnote Web"解决办法
查看>>
python全栈 计算机硬件管理 —— 硬件
查看>>
大数据学习
查看>>
简单工厂模式
查看>>
Delphi7编译的程序自动中Win32.Induc.a病毒的解决办法
查看>>
Objective-C 【关于导入类(@class 和 #import的区别)】
查看>>
倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-点击运行按钮进入到运行状态报错Error starting TwinCAT System怎么办 AdsWarning1823怎么办...
查看>>
【转】javascript 中的很多有用的东西
查看>>
Centos7.2正常启动关闭CDH5.16.1
查看>>
Android 监听返回键、HOME键
查看>>
Android ContentProvider的实现
查看>>
sqlserver 各种判断是否存在(表名、函数、存储过程等)
查看>>
给C#学习者的建议 - CLR Via C# 读后感
查看>>
Recover Binary Search Tree
查看>>
Java 实践:生产者与消费者
查看>>
[转]IOCP--Socket IO模型终结篇
查看>>
js 获取视频的第一帧
查看>>
各种正则验证
查看>>
观察者模式(Observer)
查看>>
python中numpy.r_和numpy.c_
查看>>