如何在Cucumber java中使用嵌套的Scenario Outline

时间:2017-10-31 05:09:19

标签: java selenium cucumber

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'登录并执行相同操作。

2 个答案:

答案 0 :(得分:3)

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

步骤定义及其调用的方法是用编程语言编写的。这为您提供了处理与系统交互的详细信息所需的全部功能。

编写Cucumber场景的艺术是每个人都要谈论

  1. 我们需要设置的状态,以便我们可以做某事(Givens)
  2. 我们的互动(何时)
  3. 我们希望在互动后看到什么。 (然后)
  4. 因此,对于您的方案,我们有

    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)添加另一个,也许在后台

    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,你永远不应该嵌套它们。

答案 1 :(得分:0)

黄瓜中不支持嵌套场景轮廓。但你可以用下面的方法来克服它。

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 |