1、Apifox根目录 新建接口并保存成功用例
2、导出全部接口(Apifox格式)
3、Python代码生成最终的基础用例文件
import copy
import json
'''
生成指定接口索引下的case集合
file_path:Apifox导出的JSON文件路径
out_path: 自动生成后的简单用例路径(默认值:./generate_apifox_case.json)
'''
def generate_apifox_case(file_path, out_path='./generate_apifox_case.json'):
with open(file_path, 'r', encoding='utf-8') as file:
data = json.load(file)
# 当前导出的数据一共有多少个接口
interface_num = len(data['apiCollection'][0]['items'])
for item_index in range(interface_num):
# 得到第一条用例
case_no1 = data['apiCollection'][0]['items'][item_index]['api']['cases'][0]
# case 集合
caseArr = []
# 得到一个完整的正确case
# 字典case_no1的键/值对深拷贝返回
apiCaseObj = copy.deepcopy(case_no1)
caseArr.append(apiCaseObj)
# 得到所有的请求参数名称
# queryString参数
queryParam = apiCaseObj['parameters']['query']
# requestBody参数
requestBodyParam = apiCaseObj['requestBody']['parameters']
# 请求为queryString
if (queryParam):
# 请求为requestBody
requestArr = queryParam
requestNameArr = []
for item in requestArr:
requestNameArr.append(item['relatedName'])
id = 0
for i in range(len(requestNameArr)):
# 根据现有参数,生成参数不传的case
id += 1
noParamApiCaseObj = copy.deepcopy(case_no1)
noParamApiCaseObj['id'] += id
noParamApiCaseObj['name'] = requestNameArr[i] + ' 不传'
noParamApiCaseObj['parameters']['query'][i]['enable'] = False
caseArr.append(noParamApiCaseObj)
id += 1
# 根据现有参数,生成参数为空的case
nullParamApiCaseObj = copy.deepcopy(case_no1)
nullParamApiCaseObj['id'] += id
nullParamApiCaseObj['name'] = requestNameArr[i] + ' 为空'
nullParamApiCaseObj['parameters']['query'][i]['value'] = ''
caseArr.append(nullParamApiCaseObj)
id += 1
# 根据现有参数,生成参数错误的case
errParamApiCaseObj = copy.deepcopy(case_no1)
errParamApiCaseObj['id'] += id
errParamApiCaseObj['name'] = requestNameArr[i] + ' 填错'
errParamApiCaseObj['parameters']['query'][i]['value'] = '填错'
caseArr.append(errParamApiCaseObj)
elif (requestBodyParam):
# 请求为requestBody
requestArr = requestBodyParam
requestNameArr = []
for item in requestArr:
requestNameArr.append(item['relatedName'])
id = 0
for i in range(len(requestNameArr)):
# 根据现有参数,生成参数不传的case
id += 1
noParamApiCaseObj = copy.deepcopy(case_no1)
noParamApiCaseObj['id'] += id
noParamApiCaseObj['name'] = requestNameArr[i] + ' 不传'
noParamApiCaseObj['requestBody']['parameters'][i]['enable'] = False
caseArr.append(noParamApiCaseObj)
id += 1
# 根据现有参数,生成参数为空的case
nullParamApiCaseObj = copy.deepcopy(case_no1)
nullParamApiCaseObj['id'] += id
nullParamApiCaseObj['name'] = requestNameArr[i] + ' 为空'
nullParamApiCaseObj['requestBody']['parameters'][i]['value'] = ''
caseArr.append(nullParamApiCaseObj)
id += 1
# 根据现有参数,生成参数错误的case
errParamApiCaseObj = copy.deepcopy(case_no1)
errParamApiCaseObj['id'] += id
errParamApiCaseObj['name'] = requestNameArr[i] + ' 填错'
errParamApiCaseObj['requestBody']['parameters'][i]['value'] = '填错'
caseArr.append(errParamApiCaseObj)
# 格式化
# print("\"cases\": " + json.dumps(caseArr, ensure_ascii=False, indent=2))
# 生成到新文件中
data['apiCollection'][0]['items'][item_index]['api']['cases'] = caseArr
with open(out_path, 'w', encoding="utf8") as f:
# 格式化输出
# f.write(json.dumps(data, ensure_ascii=False, indent=2))
# 压缩输出
f.write(json.dumps(data, ensure_ascii=False))
# 调用函数,实现具体功能!!!
generate_apifox_case('D:\system\Desktop\测试使用.apifox.json')
运行结束,得到的新文件!
4、Apifox导入生成的文件,得到最终用例