一:提取
读取测试用例
测试用例excel如图:

读取excel代码如下:
from openpyxl import load_workbook
from jsonpath import jsonpath
import os
def read_excel(file_path, sheet):
"""
读取测试用例文件
:param file_path: 用例文件的路径
:param sheet_name: sheet的名称
:return: all_data 返回元素为字典格式的列表
"""
table = load_workbook(file_path)
sh = table[sheet]
data = sh.values
# 用于存放一个sheet页下多条测试用例
all_data = []
keys = data[0]
for row in data(1:):
str_dict = dict(zip(keys, row))
all_data.append(str_dict)
return all_data
def parameter_extraction(response):
"""
从响应结果中提取
注:实际自动化中可能需要将extract_epr也做参数传入,当前为了更直观直接调用了读取excel
:param response:响应结果
:return: 无
"""
extract_epr = read_excel(file_path, sheet)[0]['extract']
extract_epr = eval(extract_epr)
for key, value in extract_epr.items():
res = jsonpath(response, value)
print(res)
if res:
setattr(Data, key, res[0])
新建一个Data类,无任何属性用于动态存储属性值
class Data:
pass
二:替换
下一个接口需要使用的参数

替换代码如下:
import re
def replace_case_request_param(case_dict, class_global:Data):
"""
主要功能:用于替换用例中所有标识符,通过正则表达式获取所有的mark表达式
:param class_global:类属性 见上边代码
:param case_dict:读取的测试用例
:return:返回替换后的测试数据,类型为字典
"""
case_str = str(case_dict)
# 使用正则表达式提取用例的标记需要替换的值
replace_data = re.findall('#(.+?)#', case_str)
if replace_data:
for mark in replace_data:
if hasattr(class_global, mark):
# 取出
case_str = case_str.replace('#{}#'.format(mark), getattr(class_global, mark))
case_dict = eval(case_str)
return case_dict