【问题标题】:How to use nested Scenario Outline in Cucumber java如何在 Cucumber java 中使用嵌套的场景大纲
【发布时间】:2018-04-12 04:48:03
【问题描述】:

2假设我有一个类似的场景大纲

@Scenario1
Scenario Outline:Scenario one
    Given fill up login fields "<email>" and "<password>"
    And click the login button
 Examples:
      | email            | password |
      | someEmailAddress | SomePassword | 
      | someEmailAddress2| SomePassword2 | 

还有另一个场景,比如

@Scenario2
Scenario Outline:Scenario two
    Given fill up  fields "<value1>" and "<value2>"
 Examples:
      | value1  | value2  |
      | value11 | value21 | 
      | value12 | value22 | 

我如何运行类似使用“someEmailAddress”登录的场景并填写所有scenario2 值,然后使用“someEmailAddress2”登录并执行相同操作。

【问题讨论】:

    标签: java selenium cucumber


    【解决方案1】:

    Cucumber 场景是我们用来描述行为的工具,即正在发生的事情及其重要性。它们不是编程测试的工具。有效使用 Cucumber 的方法是让您的场景保持简单,并让由步骤定义调用的代码为您完成编程。

    步骤定义及其调用的方法是用编程语言编写的。这为您提供了处理与系统交互的细节所需的所有能力。

    写黄瓜场景的艺术是每个人都可以谈论

    1. 我们需要设置的状态,以便我们可以做某事(Givens)
    2. 我们的互动(何时)
    3. 我们期望在交互之后看到什么。 (然后)

    所以对于你的场景,我们有

    Scenario: Login
      Given I am registered
      When I login
      Then I should be logged in
    

    当我们使这个场景工作时,我们的程序具有我们可以登录的行为。那么我们可以在其他场景中使用这种行为,例如

    Scenario: See my profile
      Given I am logged in
      When I view my profile
      Then I should see my profile
    

    现在要完成这项工作,我们可能需要做更多工作,因为这个场景还没有注册用户。我们可以通过多种方式处理这个问题

    1) 添加另一个 Given,可能在后台

    Background:
        Given I am registered
    
      Scenario ...
        Given I am logged in
    

    2) 我们可以在登录步骤中注册例如

       Given "I am logged in" do
          @i = register_user
          login_as user: @i
        end 
    

    请注意,在这一步中,我们如何调用辅助方法 register_userlogin_as 来为我们完成工作。

    这是开始使用 Cucumber 的方法。注意我的场景没有提到我们如何登录,没有电子邮件,没有密码,没有填写任何内容。要有效地使用 Cucumber,您必须将这些细节下推到步骤定义和它们调用的辅助方法中。

    总结

    让您的场景保持简单,并使用它们来描述是什么并解释为什么。使用步骤定义和辅助方法来处理 HOW。使用 Cucumber 时无需使用 Scenario Outlines 并且永远不要嵌套它们。

    【讨论】:

    • 声明“使用 Cucumber 时无需使用场景大纲”适用于这个特定示例还是作为一般规则?我可以想到几个不同的用例,其中场景大纲可能是更好/更简单的方法。
    • 这是一般规则。我知道很多人不会同意我的观点,这很好。但就我而言,任何用场景大纲表达的用例都是我可以在没有大纲的情况下更好地表达的用例。
    • 很公平。对我来说,大纲的最佳用例是测试测试用例的不同排列,而不必创建同一场景的多个副本。
    【解决方案2】:

    黄瓜中不支持嵌套场景大纲。但您可以使用以下方法来克服它。

    Scenario Outline:Scenario one and two
        Given fill up login fields "<email>" and "<password>"
        And click the login button
        And fill up  fields "<value1>" and "<value2>"
     Examples:
          | email            | password      | value1  | value2  |
          | someEmailAddress | SomePassword  | value11 | value21 | 
          | someEmailAddress | SomePassword  | value12 | value22 | 
          | someEmailAddress2| SomePassword2 | value11 | value21 | 
          | someEmailAddress2| SomePassword2 | value12 | value22 | 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-04
      • 2021-03-11
      • 1970-01-01
      • 2018-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多