swagger 自动生成接口测试用例

本文介绍了如何利用Swagger自动生成接口测试用例,并将其集成到ddt+requests+unittest框架的Excel文件中。虽然断言部分需手动输入,但通过生成的日志文件和对比结果,可以方便地调整接口数据。同时,作者邀请读者分享其他自动化测试策略。
摘要由CSDN通过智能技术生成

---整体更新一波---
  1.实际工作中,因为要动手输入的地方比较多,自动生成的异常接口用例感觉用处不大,就先去掉了,只保留了正常的;
  2.接口有改动的,如果开发人员没有及时告知或没有详细告知,会增加一些不必要的麻烦,所以增加了文件对比功能;

目录:
  

 

case_generate.py
import sys

sys.path.append('D:\Interface_framework_Beauty')

import requests
import os
from common.operation_excel import Write_excel  # 写入excel模块
from common.logger import Log  # 打印日志模块
from common.processing_json import write_data  # 写入json文件模块
from common.difference import diff_excel, diff_json
from common import read_config

title_list = []

old_excel_path = os.path.abspath(
    os.path.dirname(os.path.dirname(__file__))) + '\\case_generate' + '\\data_old' + '\\demo_api.xlsx'
excel_path = os.path.abspath(
    os.path.dirname(
        os.path.dirname(__file__))) + '\\case_generate' + '\\data_new' + '\\demo_api.xlsx'  # case path
old_json_path = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) + '\\case_generate' + '\\data_old'
json_path = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) + '\\case_generate' + '\\data_new'


class AnalysisJson:
    """swagger自动生成测试用例"""

    def __init__(self, url_json):
        self.url_json = url_json
        r = requests.get(self.url_json + '/v2/api-docs?group=sign-api').json()
        self.title = r['info']['description']
        write_data(r, '{}.json'.format(self.title))
        self.interface_params = {}
        self.log = Log()
        self.row = 2  # 写入excel起始行数
        self.num = 1  # case id
        global title_list, json_path
        if self.check_data(r):
            self.json_path = os.path.abspath(
                os.path.dirname(
                    os.path.dirname(__file__))) + '\\case_generate' + '\\data_new' + '\\{}_data.json'.format(
                self.title)  # json file path,执行多个url的情况,区分生成的json文件
        self.data = r['paths']  # paths中的数据是有用的

        title_list.append(self.title)

    def check_data(self, r):
        """检查返回的数据是否是dict"""
        if not isinstance(r, dict):
            self.log.info('swagger return json error.')
            return False
        else:
            return True

    def retrieve_data(self):
        """主函数"""
        global body_name, method
        for k, v in self.data.items():
            method_list = []
            for _k, _v in v.items():
                interface = {}
                if not _v['deprecated']:  # 接口是否被弃用
                    method_list.append(_k)
                    api = k  # api地址
                    if len(method_list) > 1:  # api地址下的请求方式不止一个的情况
                        
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值