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,即引數替換結果
備註:第一次寫部落格,不好的地方多指教,本文為原創,如有引用,請註明出處,謝謝