在测试用例的前面加上:
@pytest.mark.parametrize(“参数名”,列表数据)
参数名:用来接收每一项数据,并作为测试用例的参数。
列表数据:一组测试数据。
1.单用例–参数
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pytest
# 参数化
@pytest.mark.parametrize("test_input, expected", [("3+4", 9), ("2+5", 7), ("6*9", 48)])
def test_case(test_input, expected):
print(f"测试数据{test_input}, 预期结果{expected}")
assert eval(test_input) == expected
2.多用例–装饰器类
当装饰器 @pytest.mark.parametrize 装饰测试类时,会将数据集合传递给类的所有测试用例方法
import pytest
my_data = [(1, 2, 3), (4, 5, 9)]
datas_dict = [
{"user": "Tests1", "pwd":"123456"},
{"user": "Tests2", "pwd":"123456"}
]
# 参数为列表中嵌套元组
@pytest.mark.parametrize("a, b, expect", my_data)
class TestParametrize:
def test_parametrize_case1(self, a, b, expect):
print("\n测试用例case1 测试数据为{}+{}".format(a, b))
assert a + b == expect
# 参数为列表中嵌套字典
@pytest.mark.parametrize('dic', datas_dict)
def test_parametrize_case(dic):
print(f'测试数据为\n{dic}')
print(f'user:{dic["user"]}, pwd:{dic["pwd"]}')