使用假设验证api的自大性
swagger-check的Python项目详细描述
虚张声势的检查
您有一个swagger(也称为openapi)模式来定义您提供的api,但是您的api是否真的符合该模式,并且它是否正确地处理了所有有效的输入?
swaggercheck
将基于属性/模糊测试的hypothesis
功能与pyswagger
功能结合起来,探索api的各个方面,测试api是否符合规范。
虚张声势的一致性
这个项目由swagger-conformance by Oliver Pratt和贡献者组成。
原始库运行良好,但遗漏了几个对我很重要的选项(例如命令行的基本身份验证支持),因此我制作了一个经过调整的版本,即breaking原始库。
目前我还没有计划在上游贡献我的更改,因为同时拥有一个好的cli和一个好的可嵌入库将是一项巨大的努力。
您可以使用swaggercheck
作为库,但该工具的目的是有一个很好的cli,可以在我的终端或在ci构建期间输出亮色,因此大多数设计决策都将针对这一目标进行定制。
目的
swagger/openapi规范允许您仔细定义哪些东西对api的消费和生产是有效的,哪些是无效的。此工具接受该定义,并尝试在严格遵循模式的同时,请求浏览api的所有部分。它的目标是找到应用程序未能遵守其自身规范的任何地方,甚至是完全崩溃的地方,这样您就可以修复它们。
这不是一个完整的你的HTTP接口的模糊测试仪,例如发送完整的垃圾,或不存在的端点等。它的目的是确保任何一个有效的客户端,使用你的API完全按照你指定的,不能破坏它。安装
$ pip install swagger-check
用法
安装完成后,可以对api运行的最简单的测试是从命令行执行以下操作:
$ swaggercheck http://example.com/api/schema.json
url应该解析为您的swagger模式的位置,或者它可以是磁盘上文件的路径。
配置
CLI argument | Environment variable | Default | Description |
---|---|---|---|
^{ | ^{ | 20 | Number of tests per endpoint |
^{ | ^{ | false | Keep testing endpoints even if one test breaks |
^{ | ^{ | Username to use over ^{ | |
^{ | ^{ | Password to use over ^{ | |
^{ | ^{ | Token to use over ^{ | |
^{ | ^{ | force a security scheme if not ^{ |
注意:cli参数优先于环境变量
常见问题解答
等等,我不明白,这东西是怎么回事?
简而言之,它允许您为您的swagger api操作的参数生成示例值,使用这些值发出api请求,并验证响应。
SSL证书错误
如果命令因以下错误而崩溃:
Unable to connect Swagger client: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:847)>
在macosx上使用python3.6时,您可能对以下stackoverflow线程感兴趣:https://stackoverflow.com/a/42334357