文件路径:项目目录/common/data_extract.py
使用jsonpath提取接口返回数据中的信息,并设置为环境变量EnvData类的类属性,jsonpath写在excel中。
data_extract.py
import jsonpath
from common.data_handler import EnvData
from common.my_logger import logger
def data_extract(extract_exprs, response_dict):
"""
根据jsonpath提取表达式,从响应结果当中,提取数据并设置为环境变量EnvData类的类属性,作为全局变量使用。
:param extract_exprs: 从excel当中读取出来的,提取表达式的字符串。
:param response_dict: http请求之后的响应结果。
:return:Nonoe
"""
# 将提取表达式转换成字典
extract_dict = eval(extract_exprs)
logger.info("要从响应结果当中提取的数据集为:\n{}".format(extract_dict))
# 遍历字典,key作为全局变量名,value是jsonpath提取表达式。
for key, value in extract_dict.items():
# 提取
res = str(jsonpath.jsonpath(response_dict, value)[0])
# 设置环境变量
logger.info("设置环境变量.key:{},value:{}".format(key, res))
setattr(EnvData, key, res)
if __name__ == '__main__':
ss = '{"member_id":"$..id","token":"$..token"}'
response = {'code': 0, 'msg': 'OK',
'data': {'id': 100010, 'amount': 8000.44, 'mobile_phone': '18620002000',
'name': 'ceshi', 'time': '2022-01-3 12:50:25.0',
'token_info': {'token_type': 'Bearer', "expires_in": 28800,
'token': 'eyJhbGciOiJSUzI1NiIsImtpZCI6IjU4QjhCMTM0OUVEOTBDN0U3NzVDOUYyMUU1RDdBOUE1IiwidHlwIjoiYXQrand0In0'}},
}
data_extract(ss, response)
print(EnvData.__dict__)