首页 > 解决方案 > 如何在另一个场景中使用 beforehook 调用 Cucumber 场景

问题描述

我用量角器和黄瓜。我有一个场景,我需要将另一个场景称为前提条件。图案是这样的:

场景1:

@test1
Scenario: first scenario

场景2:

@test2
//Need to call the first scenario as the pre-condition
Scenario: second scenario

在这里,我想用黄瓜钩。所以,我的钩子文件是这样的:

this.Before({tags: ["@test2"]}, function (event, callback) {
        console.log('call the first scenario');
        this.feature(tags: ["@test1"]);
        callback();
    });

有人能告诉我我该怎么做“this.feature(tags: ["@test1"]);”

标签: angularjsprotractorcucumberhook

解决方案


在 Cucumber 中,您使用 Given 进行设置。

在您的情况下,您需要编写一个 Given 来完成您的第一个场景所做的事情。现在的问题变成了如何优雅地做到这一点

如果您将所有步骤定义实现为对辅助方法的单个调用,这将变得相当容易。由于每个步骤定义只是一个调用,您可以将场景 1 转换为一系列调用,例如 foo、bar、baz

现在对于场景 2 及其给定,您编写一个新方法scenario 1,该方法只是重复调用,例如

def scenario1 foo bar baz end

通过这样做,您已经将问题从 Cucumber 中移出并进入您正在实施您的步骤的编程语言中。这种方法有一个陡峭的学习曲线,你必须

  1. 学习如何用您选择的语言编写辅助方法
  2. 了解如何在您的功能之间共享辅助方法

我无法帮助您,因为您使用的是 JAVA 而我使用的是 Ruby。我确实知道它在 Java 中比在 Ruby 中复杂得多。然而,它绝对值得学习如何做到这一点,因为这将使您能够使所有杯子变得更简单,并让您有机会让它们变得更快。


推荐阅读