【问题标题】:Cucumber /Gherkin: Passing variables between different step definitionCucumber /Gherkin:在不同的步骤定义之间传递变量
【发布时间】:2018-03-29 16:37:07
【问题描述】:

我是黄瓜和小黄瓜世界的新手。我想知道是否有一种在不同步骤定义文件之间共享变量的好方法? 对于我的示例:我有 2 个功能文件(GET 和 POST),这有 2 个步骤定义文件(GET 和 POST)。这两个功能文件都有一个共同的步骤来设置测试数据。所以我想我会把这个数据集移动到一个 CommonSteps 文件中,这是我能够做到的。但是在这个数据设置方法中,我为一个变量赋值,需要在 2 步定义文件(GET 和 POST)中使用。我的问题是如何通过 Gherkin 完成此操作?

【问题讨论】:

  • 这个有什么帮助吗?我知道有 Java 依赖注入概念可以解决这个问题,但我想通过 GHerkin 检查是否有更好的方法。
  • 在 java/jvm 中的步骤之间共享变量/对象的推荐方法是通过依赖注入。您可以使用几个依赖框架之一。 Afaik 你不能通过 Gherkin 分享它。如果您使用的是 Spring,我已经写了一篇关于在 Java 中使用 Spring here 的博客。

标签: groovy cucumber rest-assured gherkin


【解决方案1】:

在不同步骤类中定义的步骤之间共享状态就像 @Marit 所说的使用依赖注入完成。

其他口味的 Cucumber 使用共享的 World 对象。您可以使用public static 变量来共享状态,但这很麻烦,因为状态可能会在步骤之间泄漏。您最终可能会遇到这样一种情况,即步骤开始相互依赖,共享变量在每次执行之前都不会重置。依赖于其他步骤的步骤是 Cucumber 社区的一个众所周知的问题,并且您希望不惜一切代价避免。

Cucumber 支持几种不同的依赖注入框架。如果你的项目已经使用了依赖注入框架,看看你是否可以在你的 Cucumber 场景中使用它。如果你不使用任何依赖注入框架,我建议使用 PicoContainer。

我写了几篇关于一些不同选项的博文:

它们都是基于 Java 的。我认为可以将它们与 Groovy 一起使用,但我还没有尝试过。

【讨论】:

  • 感谢您提供有用的信息。我最终使用了 public static ,直到现在它运行良好,变量在不同的 step def 文件中使用。但鉴于上述使用静态变量的副作用,我肯定会尝试重新审视这种方法。我没有选择 WorldObject,因为它对我来说听起来有点复杂。
  • 公共静态变量将起作用。直到没有。请记住,它不会在执行之间重置,因此存在风险。很可能很危险。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多