接口自动化学习三:参数化parameterize

发布于:2025-04-04 ⋅ 阅读:(18) ⋅ 点赞:(0)

使用parametrize之前:

def add(x,y):
    return x+y
class TestAddFunction(object):
    def test01(self):
        res=add(2,4)
        assert 6==res

    def test02(self):
        res=add(4,6)
        assert 10==res

parametrize参数化之后:

import pytest
def add(x,y):
    return x+y

data=[(10,20,30),(200,300,600)]

class TestAddFunction(object):
    @pytest.mark.parametrize("x,y,expect",data)  
    def test_add(self,x,y,expect):#通用测试方法
        res=add(x,y)  #调用待测函数
        assert expect==res   #断言预期结果是否正确

参数化:@pytest.mark.parametrize(“a,b,expect”,[(),()…])
参数2必须要求是[(),()…]格式

数据来源于json文件的话,需要对其进行处理
在这里插入图片描述
封装一个函数,对json进行处理:

def read_json_data():
    with open("add_data.json","r",encoding="utf8") as f:
        json_data=json.load(f)
        data_list=[]
        # print(json_data)
        for data in json_data:
            val=data.values()
            tmp=tuple(val)
            data_list.append(tmp)
        print(data_list)

在这里插入图片描述
将文件名作为一个参数,传入进去:

def read_json_data(file_name):
    with open(file_name,"r",encoding="utf8") as f:
        。。。。。
if __name__ == '__main__':
    # read_json_data()
    res_list=read_json_data("add_data.json")
    print(res_list)

后续需要增加测试数据的时候,只需要在json文件中添加更多数据,代码不需要修改。

参数化步骤:
1.将 测试数据 ,按照[{},{}…]形式,组织到json文件中;
2.读取json文件,将数据转为[(),()…]格式
3.在通用测试方法的上一行,添加装饰器@pytest.mark.parametrize()
4.传参。 参1:字符串类型,内容为json文件中一组数据的key。参2:[(),()…]格式的数据。
5.给通用测试方法传入形参(与参1字符串内容一致)。