pytest学习09--参数化parametrized
前言:
pytest.mark.parametrize装饰器可以实现测试用例参数化
parametrizing
1、这里是一个实现检察一定的输入和 期望输出测试功能的典型例子
import pytest @pytest.mark.parametrize('test_input,expected',[('3+5',8),('1+2',3),('8*9',72)]) def test_eval(test_input,expected): assert eval(test_input) == expected if __name__ == '__main__': pytest.main(['-s'])
运行结果:
在这个例子中设计的,只有一条输入/输出的简单测试功能。和往常一样函数的参数,你可以在运行结果看到输入和输出对的值
2、它也可以标记单个测试实例的参数化,例如:使用内置的mark.xfail--标记为预期失败
import pytest @pytest.mark.parametrize('test_input,expected',[('3+5',8),('1+2',3),pytest.param('8*9',72,marks=pytest.mark.xfail)]) def test_eval(test_input,expected): assert eval(test_input) == expected if __name__ == '__main__': pytest.main(['-s'])
运行结果:
标记为失败的用例就不运行了,直接跳过显示XPASS
参数组合:
1、若要获得多个参数化参数的所有组合,可以堆叠参数化装饰器
@pytest.mark.parametrize('x',[1,2])
@pytest.mark.parametrize('y',[3,4])
def test_foo(x,y):
print("测试数据组合:x->%s, y->%s "%(x,y))
if __name__ == '__main__':
pytest.main(['-s'])
运行结果: