0. pytest.mark.parametrize概述
传一个参数 @pytest.mark.parametrize(‘参数名’,list) 进行参数化
传两个参数@pytest.mark.parametrize(‘参数名1,参数名2’,[(参数1_data[0], 参数2_data[0]),(参数1_data[1], 参数2_data[1])]) 进行参数化
- 第一个参数是字符串,多个参数中间用逗号隔开
- 第二个参数是list,多组数据用元组类型,list的每个元素都是一个元组,元组里的每个元素和按参数顺序一一对应。
1. 一个参数多值
# 一个参数多值
cases_list1 = [1,2,3]
desc1 = ["case1", "case2","case3"]
@pytest.mark.parametrize("data", cases_list1, ids=desc1)
def test_demo1(data):
print(data)
运行结果
2. 多个参数多值-数组元素是dict类型
# 多参数多值-数组元素是dict数据类型
cases_dict = [{
"index": 1, "case_status": "skip", "payload": "url1", "expect": ["expect11", "expect12", "expect13"]},
{
"index": 2, "case_status": "skip", "payload": "url2", "expect": ["expect21", "expect22", "expect23"]}]
desc2 = ["case1", "case2"]
@pytest.mark.parametrize("data", cases_dict, ids=desc2)
def test_demo2(data):
print(data)
运行结果
3. 多个参数多值-数组元素是list类型
# 多参数多值-数组元素是list数据类型
cases_list = [["name1", 34, {
"k1": "v1"}], ["name2", 24, {
"k2": "v2"}], ["name3", 18, {
"k3": "v3"}]]
@pytest.mark.parametrize("name,age,payload", cases_list)
def test_demo3(name, age, payload):
print("name:%s,age:%d,payload:%s"%(name,age,payload))
运行结果