一、接口自動化的時候,下一個接口的入參是需從上一個接口的參數得出,兩個接口的參數需關聯;如下:
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"}