一、接口测试线性代码,后面有时间再封装优化一下
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)