python接口自动化优化--1版

今天发现之前发的接口自动化运行一直报错,emm的写的时候都试过没报错的,
然后优化了一版,代码如下,只展示了post的,get的基本差不多暂时没写了

还有使用json方法数据需要全部都加双引号,excel数据格式如下图
在这里插入图片描述

接口调用线性代码如下:

import excel_01
import re
import json
import requests


excel_data = excel_01.list_excel_data()
# data_dict = {'commodityId': '1777', 'mchId': '30010'}
data_dict = {}
for ii in range(0, len(excel_data)):
    a = excel_data[ii]
    url = a.get('url')
    request_type = a.get("请求类型")
    header = a.get('header')
    data_json = a.get('params')
    if_response_object_draw = a.get('响应中是否有字段需要提取')
    response_draw_name = a.get("响应提取字段名称")  # 需要判断有多个字段的情况
    if_params_draw = a.get("入参中是否需要上一接口返回值")
    params_draw_name = a.get("入参中需要上一接口返回字段名称")  # 需要判断有多个字段的情况

    # 将data入参转义成json
    data_json_l = json.loads(data_json)
    # 将header入参转义成json
    header_l = json.loads(header)
    # 获取header入参中参数是否有引用上一接口返回参数值,使用正则返回列表格式
    header_re = re.findall('"\\${(.*?)}"', header)
    # 获取data入参中参数是否有引用上一接口返回参数值,使用正则返回列表格式
    params_re = re.findall('"\\${(.*?)}"', data_json)

    if request_type == "post":  # 判断接口类型
        if len(header_re) > 0:  # 判断header入参中参数是否有引用上一接口返回参数值
            for kk in header_re:  # 如果有用到上一接口返回值,通过循环替换当前header中的入参值,上一接口返回值会存在data_dict字典里
                header_l[kk] = data_dict.get(kk)
        if len(params_re) > 0:  # 判断data入参中参数是否有引用上一接口返回参数值
            for mm in params_re:  # 如果有用到上一接口返回值,通过循环替换当前data中的入参值,上一接口返回值会存在data_dict字典里
                data_json_l[mm] = data_dict.get(mm)
            # 替换完相关参数值后,调用requests.post
            response_value = requests.post(url=url, json=data_json_l, headers=header_l)
            print(response_value.text)  # 输出接口response

        else:  # 这里相当于header、data入参里面都没有引用其他接口的返回值做入参
            response_value = requests.post(url=url, json=data_json_l, headers=header_l)
            print(response_value.text)

        # 这里是判断当前接口返回的response中有需要提取的参数,有多个需要提取的参数用英文逗号分割,提取的参数存到data_dict字典中,方便后面使用
        if if_response_object_draw == "是":
            if ',' in response_draw_name:  # 多个提取参数的情况,我这里用逗号判断的
                response_draw_name_list = response_draw_name.split(',')  # 按逗号分割开参数
                for kk in response_draw_name_list:  # 使用正则re循环去response_value中取出值
                    response_draw_name_value = re.findall('%s":"(.*?)",' % kk, response_value.text)[-1]
                    data_dict[kk] = response_draw_name_value  # 将取出的值放data_dict字典里
            else:  # 这里是只有一个提取参数的情况
                response_draw_name_value = re.findall('%s":"(.*?)",' % response_draw_name, response_value.text)[-1]
                data_dict[response_draw_name] = response_draw_name_value



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值