pytest + yaml 框架 -19.根据 swagger.json 自动生成 yaml 格式自动化用例

Posted 上海-悠悠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytest + yaml 框架 -19.根据 swagger.json 自动生成 yaml 格式自动化用例相关的知识,希望对你有一定的参考价值。

前言

当项目中有很多个接口的时候,一个个去转成 yaml 文件的用例会很浪费时间,现在大部分格式的接口都有swagger.json 接口文档。
那么我们可以从swagger.json 中解析出接口,自动生成 yaml 格式的用例,就可以大大减少工作量。
此功能在 v1.1.5 版本上实现

环境要求
Python 大于等于3.8版本,(低于python3.8版本不支持)
Pytest 7.2.0 最新版

pip 安装插件, 最新版本v1.1.5

pip install pytest-yaml-yoyo

使用示例

目前支持2中方式生成 yaml 用例。
1.如果有本地的 swagger.json 文件,可以放到项目根目录,自己写 a.py 文件
目录结构如下

a.py 文件调用插件中的接口即可

from pytest_yaml_yoyo.swagger_parser import SwaggerToYaml
# 作者 上海-悠悠 微信:283340479

s = SwaggerToYaml('./swagger.json')
s.parse_json()
  1. 如果 有在线的swagger.json 地址,也可以支持在线接口调用

a.py 文件调用插件中的接口即可

from pytest_yaml_yoyo.swagger_parser import SwaggerToYaml
# 作者 上海-悠悠 微信:283340479

s = SwaggerToYaml('http://127.0.0.1:8000/swagger.json')
s.parse_json()

yaml 用例自动生成

执行完成后会在当前项目目录按接口模块生成对应的yaml格式用例

yaml 文件格式示例

生成的用例没有base_url ,只有接口的相对地址,那么可以在当前目录下创建pytest.ini 文件

[pytest]


base_url = http://httpbin.org

相关 功能参考全局base_url 的设置文档https://www.cnblogs.com/yoyoketang/p/16970491.html

备注说明:
1.并不是所有的swagger.json格式都支持,目前我是按flask项目生成的swagger.json 格式来解析的,其它的未知,思路供学习和参考。
2.目前只实现基础功能,需写上面代码调用此功能,暂不支持命令行操作
3.目前仅仅是抓取接口和请求参数,自动生成用例结构
4.参数部分拿文档的默认值,还需自己去调试,写对应的测试数据
5.后续想法是根据参数的范围,按等价类,边界值去生成对应的用例
6.断言部分功能未实现,目前仅断言状态码为200

以上是关于pytest + yaml 框架 -19.根据 swagger.json 自动生成 yaml 格式自动化用例的主要内容,如果未能解决你的问题,请参考以下文章

pytest文档71-pytest+yaml实现接口自动化框架

pytest + yaml 框架 - 1.我们发布上线了!

pytest文档73-pytest+yaml实现接口自动化框架之用例参数关联

pytest + yaml 框架 -10.allure 生成报告

pytest + yaml 框架 -10.allure 生成报告

pytest + yaml 框架 -9.logging日志输出和保存