使用假设验证api的自大性

swagger-check的Python项目详细描述


虚张声势的检查

您有一个swagger(也称为openapi)模式来定义您提供的api,但是您的api是否真的符合该模式,并且它是否正确地处理了所有有效的输入?

Build StatusPyPI version

swaggercheck将基于属性/模糊测试的hypothesis功能与pyswagger功能结合起来,探索api的各个方面,测试api是否符合规范。

asciicast

虚张声势的一致性

这个项目由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 argumentEnvironment variableDefaultDescription
 ^{} ^{} 20Number of tests per endpoint 
 ^{} (flag) ^{} falseKeep testing endpoints even if one test breaks 
 ^{} ^{}Username to use over ^{} authentication 
 ^{} ^{}Password to use over ^{} authentication 
 ^{} ^{}Token to use over ^{} authentication 
 ^{} ^{}force a security scheme if not ^{} or ^{

注意: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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
arraylist IndexOutOfBoundsException预防措施不起作用[Java]   java在多个字段上设置唯一约束   java Sonar没有显示测试覆盖范围   java有没有一种直接从我的应用程序发送反馈的方法?   java如何将字符串中的两个值相加?   优先级队列Java TreeSet使用的内存是否比PriorityQueue少?   java如何合并两个参数相同的XML文件?   java RxJava过期订阅   编译器优化反编译工具修改的源代码。java中的类文件   Java Swing GUI按钮和文本字段不会出现。这是一个包含Jbutton和JTextField的测试代码   java如何在stringBuilder中存储日志   swing获取Java中的屏幕大小   使用PDFBox和Swing显示嵌入式字体的java   在Java中打印1到100之间的小数字   数据结构如何在Java中创建数组、ArrayList、堆栈和队列?   java Hibernate onetomany外键   java如何从Groovy中没有“${str}”的字符串创建GString   在Android Studio(java)中创建巨大网格   Java中如何将字符串值转换为布尔值