使用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字符串内容一致)。