httprunner解析swagger接口生成json文件

本文介绍如何利用HttpRunner解析Excel表格中的URL,通过访问Swagger接口获取数据,进而生成对应的JSON测试文档。主要涉及的工具有RW_excal.py、processingJson.py和urls.py,最终根据不同URL生成不同模块的JSON文档。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要功能:解析excal表格里面的url,访问swagger生成json文件。

主要参考了基于HttpRunner,解析swagger数据,快速生成接口测试框架这篇博文,修改代码符合自己的需求而来。

解析swagger类:

import os, requests
from httprunner import logger
from lib.processingJson import write_data, get_json
from lib.urls import urls
import traceback

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

    def __init__(self, url_title):
        self.title=url_title
        self.url = urls[url_title]
        self.interface = {
   }
        self.case_list = []
        self.tags_list = []
        self.http_suite = {
   "config": {
   "name": "", "base_url": "", "variables": {
   }},
                           "testcases": []}
        self.http_testcase = {
   "name": "", "testcase": "", "variables": {
   }}
        self.http_suite['config']['name'] = url_title

    def retrieve_data(self):
        """
        主函数
        :return:
        """
        try:
            r = requests.get(self.url).json()
            # write_data(r, 'data.json')
            # r = get_json('D:\HttpRunner_framework\\testcases\data.json')
        except Exception as e:
            logger.log_error('请求swagger url 发生错误. 详情原因: {}'.format(e))
            return 'error'
        self.data = r['paths']  # 接口数据
        self.url = 'http://' + r['host']
        # self.title = r['info']['title']
        # self.http_suite['config']['name'] = self.title
        self.http_suite['config']['base_url'] = self.url

        self.definitions = r['definitions']  # body参数
        for tag_dict in r['tags']:
            self.tags_list.append(tag_dict['name'])
        i = 0
        for tag in self.tags_list:
            self.http_suite['testcases'].append({
   "name": "", "testcase": "", "variables": {
   }})
            self.http_suite['testcases'][i]['name'] = tag
            self.http_suite['testcases'][i]['testcase'] = 'testcases/'+self.title+'/' + tag + '.json'
            i += 1

        suite_path = os.path.join(os.path.abspath(os.path.join(os.path.dirname("__file__"), os.path.pardir)),
                                  "testsuites")
        testcase_path = os.path.join(suite_path, self.title+'.json')
        # print("testcase_path:%s"%testcase_path)
        write_data(self.http_suite, testcase_path)
        if isinstance(self.data, dict):
            for tag in self.tags_list:
                self.http_case = {
   <
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值