接口关联,读取响应结果中值并设置为全局动态属性,给下一个接口使用
'''
从响应结果中提取值,并设置为Data属性
'''
import jsonpath
from common.my_data import Data
def extract_data_from_response(extract_epr,response_dict,share_data_obj:Data):
# 从响应结果中提取值,并设置为DATA类的属性值
'''
:param extract_epr: excel当中extract列中的提取表达式,是一个字典形式的字符串
key为全局变量名,value为jsonpath提取表达式
'{"toke":"$..toke","member_id":"$..id","leave_amount":"$..leave_amount"}'
:param response_dict: http请求之后的响应结果,字典类型
:param share_data_obj:
:return:
'''
# 从excel中读取的提取表达式,转成字典对象
extract_dict=eval(extract_epr)
# 遍历1中字典的key,value,key是全局变量名,value为jsonpath表达式
for key ,value in extract_dict.items():
# 根据jsonpath从响应结果中,提取真正的值,value就是jsonpath表达式
result=jsonpath.jsonpath(response_dict,value)
# jsonpath表达式如果找了就是列表,找不到就返回false
# 如果找到真正的值,将其设置为Data类的属性,key为全局变量名,result[0]为提取后的值
if result:
setattr(share_data_obj,key,str(result[0]))
setattr(Data, "token", "1234564562314584555")
if hasattr(Data, "token"):
value = getattr(Data,"token")
print(value)