Python开发解析Swagger文档小工具

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 文章介绍了如何使用Python开发一个解析Swagger文档的小工具,该工具可以生成符合httprunner测试框架的json/yaml测试用例,同时还能输出Excel文件,以方便测试人员根据不同需求使用。文章提供了详细的开发步骤、环境配置和使用示例,并鼓励读者为该开源项目贡献代码和建议。

写在前头我的项目地址,欢迎star,提出更多建议!

一、HTTPRUNNER开源项目

当前框架已经更新到3.x版本;已经向pytest测试框架靠拢,并继承它的相关特性及优点。
  • 但它的优点,在某些人眼里也是有‘缺陷’的
如:它支持抓包导出har数据文件har2case转化成json/yaml格式的测试套件;也支持手动编辑维护json/yaml格式的测试用例;
但是面对接口文档,比较多的接口需要做接口测试或集成方面又略显不足,人力的手工成本大、效率又不高,有没有办法提高呢?
故而开发与该框架契合比较高的解析接口文档工具,既支持json/yaml格式又可以输出excel文档,方便更灵活的开发测试框架。
  • 咱们先安装环境,然后再一步一步完成自己的需求
// 暂时不使用它3.x版本的功能
pip install -y httprunner==2.1.3
  • 验证环境:hrun -h ,等效于httprunner -h
    image.png

二、开发解析swagger脚本

  • 先安装环境所需要的python库
// 可以写入requirements.txt文件,批量安装:pip install -r requirements.txt
celery==3.1.26.post2
openpyxl==3.0.4
requests==2.24.0
xlwt==1.3.0
xlrd==1.2.0
PyYAML==5.4.1
  • 开发工具及工程结构

    • pycharm是python工程师的开发利器
    • 工程结构截图如下:
      微信截图_20210703105544.png
  • 请注意配置properties/目录下的config.ini配置文件,需要填写自己解析的接口文档地址
[swaggerUrl]
# swagger接口文档地址
baseSever_url = http://localhost:8090
例:自己部署一个swagger项目演示效果

三、跳过开发过程看效果演示

脚本设计思想:
1、既要符合httprunner框架支持的json/yaml用例,又要支持excel输出
2、这点思想主要来源于爬虫,爬取接口响应的数据进行解析重新组装输出
  • 进入脚本,执行程序入口
if __name__ == '__main__':
    url = conf.get_value("swaggerUrl", "baseSever_url")
    js = AnalysisSwaggerJson(url)
    js.analysis_json_data(isDuplicated=False)
    js.write_excel(url, handlefile.get_file_list(case_dir))
  • 结果输出如图所示
    微信截图_20210703111436.png

  • 既有json,同时又有excel文件,是不是两全其美之法?

先来完善api/目录下的测试用例:
  • 补全接口入参,如图所示
    微信截图_20210703113055.png

  • 进入工程swagger用例目录,执行:hrun testcases\用户相关接口.json,日志截图:
    image.png

  • 并且生成html测试报告,打开如图:
    image.png

  • 是不是非常nice

一边生成json/yaml符合httprunner测试框架;
一边生成excel可以自己定制开发自动化测试框架。

四、Swagger工具总结

  • 先推广一波httprunner_swagger小工具,已经有19个star了,还缺你哦;
  • 欢迎提出不同优化建议,如果再结合其他测试框架,做成一个强大第三方开源库,服务更多的人群,这该是一件美事!
相关文章
|
18小时前
|
数据处理 Python
Python在音频传输中的应用实例解析
Python在音频传输中的应用实例解析
|
3天前
|
数据处理 Python
深入探索:Python中的并发编程新纪元——协程与异步函数解析
深入探索:Python中的并发编程新纪元——协程与异步函数解析
11 3
|
3天前
|
存储 自然语言处理 API
基于 Python 的地址解析:自动识别姓名、电话、地址、详细地址与省市区
基于 Python 的地址解析:自动识别姓名、电话、地址、详细地址与省市区
11 1
|
3天前
|
机器学习/深度学习 算法 C语言
【Python】Math--数学函数(详细附解析~)
【Python】Math--数学函数(详细附解析~)
|
4天前
|
存储 安全 网络安全
Python编程--使用PyPDF解析PDF文件中的元数据
Python编程--使用PyPDF解析PDF文件中的元数据
11 1
|
19小时前
|
数据可视化 Python
Python绘制基频曲线——实例解析与应用探讨
Python绘制基频曲线——实例解析与应用探讨
|
4天前
|
安全 数据库连接 开发者
深度解析Python上下文管理器:优雅资源管理与异常处理
深度解析Python上下文管理器:优雅资源管理与异常处理
9 0
|
2月前
|
监控 网络协议 Java
Tomcat源码解析】整体架构组成及核心组件
Tomcat,原名Catalina,是一款优雅轻盈的Web服务器,自4.x版本起扩展了JSP、EL等功能,超越了单纯的Servlet容器范畴。Servlet是Sun公司为Java编程Web应用制定的规范,Tomcat作为Servlet容器,负责构建Request与Response对象,并执行业务逻辑。
Tomcat源码解析】整体架构组成及核心组件
|
2月前
|
存储 NoSQL Redis
redis 6源码解析之 object
redis 6源码解析之 object
61 6
|
29天前
|
存储 缓存 Java
什么是线程池?从底层源码入手,深度解析线程池的工作原理
本文从底层源码入手,深度解析ThreadPoolExecutor底层源码,包括其核心字段、内部类和重要方法,另外对Executors工具类下的四种自带线程池源码进行解释。 阅读本文后,可以对线程池的工作原理、七大参数、生命周期、拒绝策略等内容拥有更深入的认识。
什么是线程池?从底层源码入手,深度解析线程池的工作原理