接口测试数据关联
一、接口自动化的时候,下一个接口的入参是需从上一个接口的参数得出,两个接口的参数需关联;如下:
1、第一个接口的参数:replace = {"token":"12344","uuid":"1yuwngwbc"}
2、第二接口的参数:tokens = {'reques':'1111','tok':'${token}$'}#:'${token}$'}
3、第二接口参数中的tok字段值需要从第一个接口获取值,可先用这中格式编写"${token}$",里面的token是需从上一个接口字段获取值的字段名
那么下面是使用正则匹配获取得到值
1、匹配获取第二接口${token}$,里面的token
#匹配获取第二接口${token}$,里面的token
def res_find(data,pattern=p_data):
"""
参数关联查询
:param data: 匹配的str
:param pattern: 正则
:return:
"""
pattern_data = re.compile(pattern)
re_res = pattern_data.findall(data)
return re_res
2、参数关联的替换,使用sub方法;从第一个接口获取的token字段的值当作替换值
def res_sub(data,replace,pattern=p_data):
"""
参数关联的替换
:param data: 数据str
:param replace: 替换的值
:param pattern: 正则匹配
:return:
"""
pattern_data = re.compile(pattern)
re_res = pattern_data.findall(data)
if re_res:
return re.sub(pattern,replace,data)
return re_res
3、因为findall(data)方法,data不能是dict类型,需要使用data = json.dumps(data)转换成字符串,不然会报如下错误:
TypeError: expected string or bytes-like object
4、结果运行
if __name__ =='__main__':
tokens = {'reques':'1111','tok':'${token}$'}#:'${token}$'}
#dict ——》str
tokens = json.dumps(tokens)
replace = {"token":"12344","uuid":"1yuwngwbc"}
field = res_find(tokens)[0]
print(field) #token
tokens=res_sub(tokens,replace[field])
print(tokens) #{"reques": "1111", "tok": "12344"}