【问题标题】:Is there a way we can chain the scenarios in karate like java method chaining有没有一种方法可以像 java 方法链接一样链接空手道中的场景
【发布时间】:2019-12-25 21:33:22
【问题描述】:

过去 6 个月我一直在使用空手道,它提供的功能给我留下了深刻的印象。 我知道空手道旨在单独测试 API,但我们也尝试将其用于涉及逐步调用多个场景的 E2E 测试。 我们的功能文件如下所示 1.呼叫功能1:场景1 2.通话功能2:场景2 ...... 注意:我们正在重复使用 API 测试和 E2E 测试的场景。有时我发现很难记住所有功能文件。 我们可以像 java 一样链接场景调用吗,我怀疑功能文件会让我们这样做。我们需要您的宝贵建议。如果您觉得我们的方法不正确,请告诉我们

【问题讨论】:

  • 我需要更多信息。 API 和 E2E 测试是什么意思?两者都可以通过 CI 作业完成,也可以放入单独的 E2E 测试应用程序中,该应用程序像云中的任何其他普通应用程序一样运行。 “无法记住所有功能文件”是什么意思?您是否在手动测试用例中使用空手道并且必须手动调用所有场景?如果你能描述一个经典的 API 测试(你做了什么)以及它与 E2E 测试有何不同,那就太好了。
  • 我附上了区分2的图片。
  • 好的,了解您创建功能文件的方式,这些文件用作其他可重用场景的组合。而且我猜您在测试自动化中选择性地调用 E2E 功能文件?而且,.. 屏幕截图显示了备忘单?这不是空手道代码的截图吧?
  • 是的,这是正确的,很抱歉,请考虑解释意图的图像。我打算将空手道用于集成/加载/组件和 E2E。如果我可以链接调用(与 intellij 建议),我可以实现所有这些事情。:)

标签: karate


【解决方案1】:

首先,我想引用文档:https://github.com/intuit/karate#script-structure

在后台使用 def 设置的变量将在每个 Scenario 之前重新设置。如果您正在寻找一种方法,每个 Feature 只做一次,请查看 callonce。另一方面,如果您希望 Background 中的变量被一个 Scenario 修改,以便以后的变量可以看到更新后的值 - 这不是您应该考虑的方式,您应该结合您的 '流入一个Scenario。请记住,您应该能够注释掉 Scenario 或通过标签跳过一些而不影响任何其他标签。请注意,并行运行器将并行运行Scenario-s,这意味着它们可以按任何顺序运行。

因此,默认情况下,我实际上建议团队使用Scenario-s,其中包含多个 API 调用。这并没有错,我真的不明白为什么有些人认为你应该为每个GETPOST 等都有一个Scenario。我认为"hello world" example 会说清楚,但是显然不是。

如果Feature 中有多个Scenario-s,只需运行该功能,所有Scenario-s 都将被执行或“链接”。那么有什么问题呢?

我认为你需要改变一些假设。空手道专为集成测试而设计。如果您确实需要一组单独的测试来一次测试一个 API,请创建单独的功能文件。空手道的全部意义在于所需的代码非常少 - 代码复制完全没问题。

让我指给你this article by Google。对于测试自动化,您不应该尝试在所有地方重用东西。弊大于利。

有关尝试在空手道中应用“过多重复使用”时发生的情况的一个很好的示例,请参阅:https://stackoverflow.com/a/54126724/143475

【讨论】:

  • 谢谢彼得,我现在更了解目标了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-26
  • 1970-01-01
  • 2014-07-17
  • 1970-01-01
  • 2021-01-23
  • 1970-01-01
相关资源
最近更新 更多