requests+unittest接口自动化-response中提取数据

文件路径:项目目录/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__)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值