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'])

  运行结果:

 

 

 

posted @ 2021-11-20 18:50  GalaxyStar  阅读(188)  评论(0编辑  收藏  举报