Apifox自动生成基础接口用例(Python终极版本)

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导入生成的文件,得到最终用例

在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Main12138

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值