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