python接口自动化测试

一、接口测试线性代码,后面有时间再封装优化一下
1.excel文件使用的样式
在这里插入图片描述
2.excel_01.py代码

import openpyxl


data = openpyxl.load_workbook(r"C:\\Users\\QQ\Desktop\\request_data.xlsx")
sheet = data['Sheet1']
# a = sheet.cell(row=3, column=1).value  # TODO 获取指定行、列的值
# print(sheet.title)  # TODO 获取sheet名称
# print(sheet.max_row)  # TODO 获取最大行数
# print(sheet.min_row)  # TODO 获取最小行数
# print(sheet.max_column)  # TODO 获取最大列数
# print(sheet.min_column)  # TODO 获取最小列数


def merge():
    # TODO 查询该sheet表单所有合并单元格
    merge_lists = sheet.merged_cells
    # print(merge_lists)
    merge_all_list = []
    # TODO 遍历合并单元格
    for merge_list in merge_lists:
        # TODO 获取单个合并单元格的起始行(row)和起始列(col)
        row_min, row_max, col_min, col_max = merge_list.min_row, merge_list.max_row, merge_list.min_col, merge_list.max_col
        if (row_min != row_max and col_min != col_max):
            row_col = [(x, y) for x in range(row_min, row_max+1) for y in range(col_min, col_max+1)]
            merge_all_list.append(row_col)
        elif (row_min==row_max and col_min != col_max):
            row_col = [(row_min, y) for y in range(col_min, col_max + 1)]
            merge_all_list.append(row_col)
        elif (row_min != row_max and col_min == col_max):
            row_col = [(x, col_min) for x in range(row_min, row_max + 1)]
            merge_all_list.append(row_col)
    return merge_all_list
    # TODO 得到的是个这样的列表值:[[(2, 1), (3, 1)], [(10, 1), (10, 2), (10, 3), (11, 1), (11, 2), (11, 3)]]


def merge_values(*rr):
    mm_list = merge()
    for ii in range(0, len(mm_list)):
        if rr in mm_list[ii]:
            value11 = sheet.cell(row=mm_list[ii][0][0], column=mm_list[ii][0][1]).value
            return value11
    else:
        value2 = sheet.cell(*rr).value
        # if value2 is None:
        #     return "None:单元格无数据"
        # else:
        return value2


def list_excel_data():
    list_val = []
    for x in range(sheet.min_row, sheet.max_row+1):
        if x != 1:
            dict_val = {}
            for y in range(sheet.min_column, sheet.max_column+1):
                kk = (1, y)
                i = (x, y)
                dict_val[merge_values(*kk)] = merge_values(*i)
            list_val.append(dict_val)
    return list_val



3.接口请求线性代码(现在运行报错了,这里请移步 优化-01版 文章

import requests
import excel_01
import json
import re


excel_data = excel_01.list_excel_data()
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 request_type == "post":
        if if_response_object_draw == "是":
            header_re = re.findall('\\${(.*?)}', header)
            params_re = re.findall('\\${(.*?)}', data_json)
            if len(header_re) > 0:
                for kk in header_re:
                    aa = '${%s}' % kk
                    header = json.loads(header.replace(aa, str(data_dict[kk])))
                if len(params_re) > 0:
                    for mm in params_re:
                        bb = '${%s}' % mm
                        data_json = json.loads(data_json.replace(bb, str(data_dict[mm])))
            else:
                data_json = json.loads(data_json)
                header = json.loads(header)

            response_value = requests.post(url=url, json=data_json, headers=header)

            if ',' in response_draw_name:
                response_draw_name_list = response_draw_name.split(',')
                for kk in response_draw_name_list:
                    response_draw_name_value = response_value.json().get(kk)
                    data_dict[kk] = response_draw_name_value
            else:
                response_draw_name_value = response_value.json().get(response_draw_name)
                data_dict[response_draw_name] = response_draw_name_value
        else:
            header_re = re.findall('\\${(.*?)}', header)
            params_re = re.findall('\\${(.*?)}', data_json)
            if len(header_re) > 0:
                for kk in header_re:
                    aa = '${%s}' % kk
                    header = json.loads(header.replace(aa, str(data_dict[kk])))
                if len(params_re) > 0:
                    for mm in params_re:
                        bb = '${%s}' % mm
                        data_json = json.loads(data_json.replace(bb, str(data_dict[mm])))
            else:
                data_json = json.loads(data_json)
                header = json.loads(header)

            response_value = requests.post(url=url, json=data_json, headers=header)

    if request_type == "get":
        if if_response_object_draw == "是":
            header_re = re.findall('\\${(.*?)}', header)
            params_re = re.findall('\\${(.*?)}', data_json)
            if len(header_re) > 0:
                for kk in header_re:
                    aa = '${%s}' % kk
                    header = json.loads(header.replace(aa, str(data_dict[kk])))
                if len(params_re) > 0:
                    for mm in params_re:
                        bb = '${%s}' % mm
                        data_json = json.loads(data_json.replace(bb, str(data_dict[mm])))
            else:
                data_json = json.loads(data_json)
                header = json.loads(header)

            response_value = requests.post(url=url, params=data_json, headers=header)

            if ',' in response_draw_name:
                response_draw_name_list = response_draw_name.split(',')
                for kk in response_draw_name_list:
                    response_draw_name_value = response_value.json().get(kk)
                    data_dict[kk] = response_draw_name_value
            else:
                response_draw_name_value = response_value.json().get(response_draw_name)
                data_dict[response_draw_name] = response_draw_name_value
        else:
            header_re = re.findall('\\${(.*?)}', header)
            params_re = re.findall('\\${(.*?)}', data_json)
            if len(header_re) > 0:
                for kk in header_re:
                    aa = '${%s}' % kk
                    header = json.loads(header.replace(aa, str(data_dict[kk])))
                if len(params_re) > 0:
                    for mm in params_re:
                        bb = '${%s}' % mm
                        data_json = json.loads(data_json.replace(bb, str(data_dict[mm])))
            else:
                data_json = json.loads(data_json)
                header = json.loads(header)

            response_value = requests.post(url=url, params=data_json, headers=header)







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值