如何使用 Visual Studio 验证 swagger rest API

本文关键字:swagger rest API 验证 Studio 何使用 Visual | 更新日期: 2023-09-27 17:56:46

我是API测试以及使用Swagger Rest API的新手。我正在寻找有关如何验证来自 swagger 的 POST 请求 Rest API 调用的示例。我正在尝试弄清楚如何编写一个单元测试来验证 C# 中的 Visual Studio 2015 版本中的 swagger REST API。

请让我知道我该如何进行,如果您有任何示例来使其工作,那么这对我来说将是一个真正的很大帮助。

谢谢阿努莎

如何使用 Visual Studio 验证 swagger rest API

以下是在 Visual Studio 上下文中测试 API 项目时需要考虑的一些事项。

请注意,此建议偏离了操作的问题:(1) 除了单元测试之外还解决了集成测试,(2) 仅讨论了 Visual Studio 2017(而不是请求的 2015)。

在端点测试 API(集成测试和验收)

这是 Swagger 直接帮助的测试级别。

Dredd可以采用不同的规范类型,即Open API/Swagger和API Blueprint ,并调用示例事务。 对API蓝图的支持似乎比使用Swagger,IMO更好。

有很多Javascript工具可以帮助测试生成和模拟,例如,swagger-test-templates,SwagMock。 摩卡、柴和开玩笑是这方面的流行工具。

一些专门从事此级别测试管理的服务:例如,SauceLabs,Ready!API,断言。 其他流行的工具是免费的,并与测试管理平台集成:例如,SwaggerInspector和SoapUI。

Visual Studio 2017 Enterprise 具有 Webtest 功能,Visual Studio Team Services 基于云的负载测试产品也支持该功能。 这在 VSTS 中具有良好的集成,因此您可以在生成时触发 Web 测试。但是,该工具面向性能测试(我不知道它对集成测试有多好)。 下面是使用 Swagger UI 和 Visual Studio 录制和重播通话的示例。

另一种更复杂的方法(已在注释中暗示)是编写手动进行 API 调用的基本单元测试(而不是某种请求/响应框架)。 作为快捷方式,您可以使用Visual Studio或NSwag从Swagger生成API客户端。 然后,在单元测试中,使用生成的客户端调用 API。 或者,可以只使用 .NET 库发出请求并检查响应。 我建议考虑将基于Javascript的测试与Visual Studio集成,而不是用C#编写这些测试。

以下是关于集成测试的一些(不太有条理的)想法......

  • 自己指定测试(请求/请求) - 就像在 API 蓝图规范中一样
  • 为测试生成模拟和模板(然后完成指定它们) - swagger-test-templates 或 SwagMock)
  • 录制和重播 - (例如,Visual Studio web测试和Jest)
  • 服务虚拟化 - Mountebank, Wiremock, MockServer

单元测试模型、控制器、服务等

这些与前面的测试 API 终结点示例不同,并且被视为单元测试活动。 如在 ASP.NET Core 中测试控制器的示例所示,棘手的部分可能是重构代码 以支持依赖关系注入,以防要在测试时换出数据库或服务。