Cucumber /Gherkin:在不同的步骤定义之间传递变量

Cucumber /Gherkin: Passing variables between different step definition

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

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

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

Cucumber 支持一些不同的依赖注入框架。如果您的项目已经使用依赖项注入框架,请查看您是否可以将其用于您的 Cucumber 场景。如果你不使用任何依赖注入框架,我建议使用 PicoContainer。

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

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