在Spring Boot Rest中测试端点是否符合openapi合同

我正在寻找一种编写测试的好方法,以确保Spring Boot Rest(2.1.9版)应用程序中的指定遵循openapi合同中的合同。

在我最近搬到的项目中,有以下工作流程:架构师编写合同openapi.yml,而开发人员必须实现端点以遵守合同。不幸的是,发生了许多差异,并且该测试必须抓住这种情况,并且无法更改此:(

我在考虑从当前ednpoints生成openapi.yml的解决方案,并以某种方式进行比较,但想知道是否有一些现成的解决方案。

yunmengyi 回答:在Spring Boot Rest中测试端点是否符合openapi合同

我正在考虑从当前ednpoints生成openapi.yml的解决方案,并以某种方式进行比较,但想知道是否有一些现成的解决方案。

在一般情况下,即使生成的规范也可能与实际的应用行为不匹配,因为某些事情无法用Open API表示。但是,它仍然可以作为起点。

Open API提供了一种前往specify examples的方法,可用于验证合同。但是实际的模式可能是更好的期望来源。

我要注意两个仅可以基于输入的Open API规范生成和执行测试用例的工具:

  1. Schemathesis同时使用示例和架构,默认情况下不需要配置。它利用基于属性的测试并验证在测试模式中定义的属性-响应代码,模式和标头。它支持Open API 2和3。
  2. Dredd着重于示例,并提供了几个automatic expectations。它仅支持Open API 2,第三个版本为experimental

两者均提供CLI,并且可以通过各种挂钩进行扩展以适合所需的工作流程。

我建议将合同(作为您提到的规范)传递给Schemathesis,它将验证您的应用程序是否正确处理了所有模式和示例。

本文链接:https://www.f2er.com/2992560.html

大家都在问