用于测试您的 API 是否符合其 swagger 规范的工具
项目描述
您有一个 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-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 91225e09bd21cc16f0a8d2c1ce1c4e6d3630c4f421c29049820a086f2c57d864 |
|
| MD5 | f62ebf1c55d2c7c84595fc308e77de16 |
|
| 布莱克2-256 | b792bafaa4c7f45122668a98d185747468f023d54eca12e2cb1f78e08d7b7f4c |