【问题标题】:How to call Cucumber scenario using beforehook in another scenario如何在另一个场景中使用 beforehook 调用 Cucumber 场景
【发布时间】:2018-05-03 19:46:12
【问题描述】:

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

场景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"]);"

【问题讨论】:

    标签: angularjs protractor cucumber hook


    【解决方案1】:

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

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

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

    现在对于场景 2,它假设你编写一个新方法 scenario 1,它只是重复调用,例如

    def scenario1 foo bar baz end

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

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

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

    【讨论】:

    • 谢谢@diabolist,我同意你的回答,但对我的要求不同,我不能对框架或步骤定义进行任何更改。我知道应该可以将场景称为前提条件,就像在黄瓜中它们有一个“beforeScenario”钩子一样,但这里的问题是如何做到这一点。否则,在所有其他地方,我都遵循给定的前提条件方法。感谢您的意见。
    • 如果你不能打破这种束缚,那么你就不能有效地使用 Cucumber。您需要与制定这些限制的人交谈并与他们合作以删除它们,或编写合适的步骤定义以满足您的需求。你不能指望 Cucumber 支持不好的做法。
    猜你喜欢
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多