我如何 运行 在测试 rest 或 graphql API 时进行黄瓜测试

How do I run cucumber tests when testing an rest or graphql API

这是我第一次玩黄瓜,还创建了一个测试和 API 的套件。我的问题是在测试 API 时是否需要 运行ning?

例如,我脑子里有这个,

我真的不知道这方面的最佳做法。我认为这是这里的主要问题抱歉。

查看 .travis.yml 文件或 bash 脚本会很有帮助。

我无法为您提供一个有效的示例。但我可以概述一下我将如何解决这个问题。

您的目标是自动验证休息 api 或类似的。也就是说,确保 Web 应用程序以预期的方式响应给定的特定问题。

出于某种原因您想使用 Cucumber。

我想提的第一件事是Behaviour-Driven开发、BDD和Cucumber不是测试工具。 BDD 和 Cucumber 的目的是充当知道系统应该做什么的人、编写代码以实现它的人以及验证行为的人之间的沟通工具。这就是为什么示例几乎是用自然语言编写的原因。

那我该如何解决这个问题?

  • 我会通过从单元测试或 Cucumber 场景中调用构成 API 的方法来验证绝大多数行为。也就是说,验证它们在没有 运行 服务器的情况下是否正常工作。而且没有数据库。这很快,速度很重要。这样我大概会验证90%以上的逻辑。

  • 我会通过启动服务器来验证接线,并验证是否可以访问上一步中验证的方法。这很慢,所以我会在这里尽可能少做。如果可能的话,我会从用于实现验证的代码中启动服务器。我将启动服务器作为测试设置的一部分。

这不涉及任何外部工具。它只涉及您的编程语言和一些库。这样做的原因是我希望尽可能便携。您使用的工具越少,处理某事就越容易。

碰巧我在我的构建工具中完成了一些设置,并让它在 运行 集成测试之前启动了一个服务器。这通常是更重的重量,我会尽可能避免。

因此,在没有服务器的情况下验证行为。验证与服务器的接线。重要的是仅验证此步骤中的接线。逻辑前面已经验证过了,就不再赘述了。

在快速反馈循环中,速度非常重要。在理想情况下,构建和测试整个系统应该只需要几秒钟而不是几分钟。

如果您有兴趣,我有一个 working example(运行ning on travis)。 我使用 docker-compose 来启动 API 和所需的组件,例如数据库,然后我 运行 cucumber-js 针对 运行ning 堆栈进行测试。

docker-compose也用于本地开发和测试。

我还发布了一个库来帮助 API 编写黄瓜,https://github.com/ekino/veggies