1、接口2的入参值依赖接口1的响应结果,如接口2的入参ids需要拿到接口1响应结果的id字段值,测试用例写在excel中,参数:{"ids":"${$..id}$"}
2、工具类result_utils.py中实现如下:
1)正则表达式:p_data = ‘\${(.*?)}\$‘ ,采用的是非贪婪模式
2)查找要替换的字段方法,返回列表:
#正则匹配查找
def res_find(data,pattern_data=p_data):
pattern = re.compile(pattern_data)
re_res = pattern.findall(data)
return re_res
param = {"ids":"${$..id}$"}
print(res_find(param,p_data)
打印结果:[‘$..id‘]3)
3)使用jsonpath从响应结果提取对应字段的值
#找到值,返回列表;没找到,返回False,bool值
def save_response(self,result,params):
if result:
param = jsonpath.jsonpath(result,params)
# 提取结果为True
if (param==False):
raise Exception("提取结果为FALSE,请检查表达式是否正确")
pass
else:
return param
else:
raise Exception(‘响应结果为空,无法提取‘)
values = Response().save_response(result,‘$..id‘)
value打印结果:单个值[‘111‘],多个值[‘111‘,‘222‘]
4)拿到了要替换的字段、和替换的新值,就要开始替换了,写了一个替换的方法
#正则匹配提取后替换
def res_sub(data,replace,pattern_data=p_data):
pattern = re.compile(pattern_data)
re_res = pattern.findall(data)
if re_res:
#replace被替换串
return re.sub(pattern_data,replace,data)
return re_resdd
调用替换的方法进行参数替换:
params为接口2拿到的入参{"ids":"${$..id}$"},values为上面3)提取的值
value = values[0],values是列表,我是取值第一个
params = res_sub(params, value)
返回params,即参数替换结果
备注:第一次写博客,不好的地方多指教,本文为原创,如有引用,请注明出处,谢谢
原文:https://www.cnblogs.com/aprlmingmei/p/15078300.html