Skip to main content

用于测试您的 API 是否符合其 swagger 规范的工具

项目描述

PyPI 版本 构建状态 编解码器 文档

PyPI 版本 PyPI 许可证

您有一个 Swagger(又名 OpenAPI)架构,定义了您提供的 API - 但您的 API 是否真的符合该架构,并且它是否正确处理所有有效输入?

swaggerconformance将基于属性/模糊测试的假设的力量与pyswagger相结合,以探索 API 的各个角落——测试其与规范的一致性。

目的

Swagger/OpenAPI 规范允许您仔细定义哪些东西对您的 API 消费和生产有效和无效。该工具采用该定义,并尝试在严格遵守架构的同时探索 API 的所有部分。它的目的是找到您的应用程序未能遵守其自身规范的任何地方,或者甚至完全崩溃,以便您可以修复它们。

这不是您的 HTTP 接口的完整模糊测试器,例如发送完整的垃圾或发送到不存在的端点等。它旨在确保任何有效的客户端,完全按照您的指定使用您的 API,不能破坏它。

设置

使用pip install swagger-conformance安装,或者手动克隆此存储库并使用pip install -r requirements.txt从其中安装依赖 项。

用法

设置后,您可以针对 API 运行的最简单的测试就是命令行中的以下内容:

python -m swaggerconformance 'http://example.com/api/schema.json'

URL 应该在哪里解析为您的 swagger 架构,或者它可以是磁盘上文件的路径。

此基本测试会尝试所有 API 操作以查找错误。有关结果的解释和运行更彻底的测试,包括 API 调用序列和定义您的自定义数据类型,请参阅示例

文档

完整的文档,包括上面提到的示例演练和 API 文档,可在此处获得

等等,我不明白,这东西有什么作用?

简而言之,它允许您为 Swagger API 操作的参数生成示例值,使用这些值发出 API 请求,并验证响应。

例如,以标准petstore API为例。在撰写本文时,它有一个带有PUT方法操作的端点/pet ,该操作采用相对复杂的主体参数。

只需一点代码,我们就可以加载该 API 的 swagger 模式,访问我们关心的操作,并为该操作生成示例参数:

>>> import swaggerconformance
>>>
>>> client = swaggerconformance.client.Client('http://petstore.swagger.io/v2/swagger.json')
>>>
>>> strategy_factory = swaggerconformance.strategies.StrategyFactory()
>>> operation = client.api.endpoints["/pet"]["put"]
>>> strategy = operation.parameters_strategy(strategy_factory)
>>> strategy.example()
{
  'body':{
    'id':110339,
    'name':'\U00052ea5\x9d\ua79d\x92\x13\U000f7c436!\U000aa3c5R\U0005b40e\n',
    'photoUrls':[
      '\ua9d9\U0003fb3a\x13\U00025c1c\U000974a8\u3497\U000515fa\n',
      "\U000b38a4>*\u6683'\U0002cd8f\x0f\n"
    ],
    'status':'sold',
    'category':{
      'id':-22555826027447
    },
    'tags':[
      {
        'id':-172930,
        'name':'\U000286df\u04dc\U00033563\u696d\U00055ba8\x89H'
      }
    ]
  }
}
>>>

有关更多详细信息以及如何使用这些参数值向 API 发出请求,请参阅示例。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

swagger-conformance-0.2.5.tar.gz (18.3 kB 查看哈希

已上传 source

内置分布

swagger_conformance-0.2.5-py3-none-any.whl (54.9 kB 查看哈希

已上传 py3