您是否应该在 REST API 集成测试中使用另一个端点进行断言?

问题描述 投票:0回答:1

我有一个 REST API,我想为 POST 端点编写集成测试,这会在数据库中创建一个 Foo 项。在测试场景中,我向此 POST 端点发出请求。 在测试的断言部分,我应该检查数据库以查看端点是否确实插入了发布的项目,还是应该为 REST API 的 Foo 实体调用 GET 端点并查看是否返回正确的结果?

我在很多例子中看到了后者,但对我来说似乎是错误的,就像我在一个测试用例中使用两个 API 调用来测试两个东西一样。我可以想象这样一个场景:我的 POST 和 GET 端点都出现故障,但测试仍然呈绿色。

testing integration-testing rest functional-testing
1个回答
0
投票

我认为,这取决于您的测试策略和目标。每种方法都有优点和缺点。让我们提一下其中的一些。

  1. 查询数据库:

优点:可靠、独立的验证。

缺点:它破坏了以 API 为中心的测试,因为集成测试通常关注 API 的行为。

  1. 使用 GET 端点

优点:以API为中心(它允许您测试完整的工作流程),更现实(它反映了使用API的用户的行为)

缺点:它依赖于另一个端点(正如您已经提到的)

我更喜欢使用 GET 方法而不是查询数据库,因为集成测试不是关注数据库等内部实现细节,而是可以将两种方法结合起来(特别是当您不确定 GET 端点是否正常工作时)。

组合方法采取的步骤: 1-发出帖子请求 2-断言post请求的response.status_code 3-发出获取请求 4-断言get请求的response.status_code 5-断言 foo 项是否在响应正文中 6-查询数据库 7-断言 foo 项目

© www.soinside.com 2019 - 2024. All rights reserved.