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

时间:2017-02-01 23:44:52

标签: api testing cucumber automated-tests web-api-testing

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

例如,我已经掌握了这个,

  • 启动快速服务器作为后台任务

  • 然后当它启动时(我怎么知道是否发生了这种情况?)然后进行黄瓜测试?

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

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

2 个答案:

答案 0 :(得分:2)

我无法为您提供一个有效的例子。但我可以概述一下如何处理这个问题。

您的目标是自动验证其他API或类似内容。也就是说,确保Web应用程序在给定特定问题时以预期方式响应。

出于某种原因,你想使用黄瓜。

我想提到的第一件事是行为驱动开发,BDD和Cucumber不是测试工具。 BDD和Cucumber的目的是在知道系统应该做什么的人,编写代码以实现系统的人和验证行为的人之间充当沟通工具。这就是为什么这些例子几乎是用自然语言编写的。

那我怎么解决这个问题?

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

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

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

我已经在构建工具中完成了一些设置,并在运行集成测试之前启动了服务器。这通常是更重的重量,如果可能的话我会避免。

因此,验证没有服务器的行为。验证服务器的接线。重要的是仅在此步骤中验证接线。逻辑已经过验证,没有必要重复。

速度,如在快速反馈循环中,非常重要。在一个美好的世界中,建立和测试整个系统应该花费几秒而不是几分钟。

答案 1 :(得分:1)

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

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

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