pytest.mark.parametrize参数化

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

运行结果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/gaogaonannannan/article/details/128664601
今日推荐