与 Rest Assured/Karate 相比,Cypress 是 API 自动化测试的不错选择吗?

Mah*_*gar 5 rest-assured karate cypress

我一直在谷歌上搜索有关使用 Cypress 进行自动化 API 测试的信息。我找到了以下链接:

我能想到的大多数情况,比如 Oauth,所有 REST 方法,包括表单数据、GraphQL、断言、模拟都可以使用 Cypress 来实现。但是我想知道为什么它没有被使用,它比其他工具是一个不错的选择吗?请建议!

非常感谢。

Pet*_*mas 7

问这些问题,您将得到答案:

  • 链接 API 请求并将一个请求的响应提供给下一个请求有多容易?
  • 创建数据驱动测试有多容易?这是循环遍历一组表格数据并向同一端点发出请求。
  • 您可以并行运行测试吗?(无需额外付费)
  • 当您并行运行测试时,您是否会获得单个聚合 HTML 报告?
  • 您可以将异步操作(例如消息队列、API 挂钩/回调)混合到您的测试套件中吗?
  • 您可以将数据库调用混合到您的测试套件和断言中吗?
  • 您能否“深度”断言响应负载,并轻松忽略(或仅检查格式)任何随机数据值,例如时间戳和生成的 id-s?
  • 您可以将功能 API 测试重新用作性能测试吗?
  • 您可以使用 IDE 逐步执行并调试您的 API 测试吗?
  • 您可以在同一框架中编写模拟,然后使用它来替换端到端测试中依赖的服务吗?

我发现很少有框架能够真正完成上述所有任务。你可以做一下研究:)


Vic*_*cko 5

我目前只与 Cypress 合作进行 api 测试(由公司决定)。没有正确或错误的答案。如果这是您想要使用的工具并且您对它感到满意,那么就使用它。

话虽这么说,考虑到 Cypress 是一个旨在进行端到端甚至组件测试的框架,因此,即使您没有 UI,它也将始终使用浏览器来执行操作(从长远来看,并且根据测试的数量,可能会对运行时间产生影响)。很多东西都是为了与 ui 组件交互而设计的,你需要修补/包装你的方式来执行更复杂的事情。

我个人在嵌套请求或必须对响应执行多个操作时遇到一些问题。一般的异步(在我看来,cypress 以一种奇怪的方式处理)。

如果我可以选择,我会选择一个为 api 测试而设计的框架,因为它会更灵活,并且在处理我上面提到的一些事情时可能会有更多工具供你使用。

希望这有帮助,祝你好运!

  • 抱歉,当您谈论 Cypress 的平均图像构建时间为 45 秒时,答案肯定是错误的。API 套件的运行速度比构建 Cypress 所需的时间还要快。它会在每次测试时加载浏览器以专门针对后端的测试类型。我们使用 Cypress 进行 UI 和端到端冒烟测试。但对于 API,出于我刚才提到的原因,我们选择了 SuperTest 和 Jest。 (3认同)
  • @anutter你是对的,我100%同意。我的意思是,没有错误的答案是,这总是取决于具体情况。如果他们想要评估响应是否具有 200 状态,进行 2 次测试并将其他所有内容安装在 cypress 中,那么时间在这里不相关 (3认同)