当我执行场景大纲时,它正在根据给定的语句执行多次(Cucumber-JVM)

时间:2018-11-20 15:23:04

标签: cucumber selenium-chromedriver cucumber-jvm cucumber-java cucumber-junit

当我执行方案大纲时,它从方案大纲的开始执行了多次。我知道它会根据测试数据执行多次,但是当我们执行场景大纲时,不应每次都从Give语句执行它,而必须多次执行Example。 如何解决这个问题。

@Workflow
Scenario Outline: Perform
   Given I click on Maglink 
   When I Click AllMagLink & Select Exception  on Advanced Filters 
   And I Send the Value After Reading Form ExcelSheet
   And I Click on Search
   And I Click on subregLink
   And I Get The xxxx From xxxx Tab
   Then I Click on <Tabs> and Validate it in AllTasks

   Examples: 
   |Tabs        |
   |Apple       |
   |Mango       |
   | PineApple  |

2 个答案:

答案 0 :(得分:1)

方案概述是一种从一个书面定义中运行多个方案的方法。对于每个示例,该方案将从一开始就作为单个方案运行。在每个方案之间(每个示例),所有设置都会重置,以使先前的方案不会影响当前的方案。

这是方案概述的工作方式,并且在过去十年中一直有效。它们可以正常工作,并且不会改变。您只是误解了它们的工作原理。

如果您想编写一个执行许多不同操作的方案,则必须将执行此操作的代码下推到步骤定义中,因此最终需要执行类似的步骤

When 'I do many different things' do
  @results = []
  @results << do_first_thing
  @results << do_second_thing
end

Then "I should see I've done different things" do
  # examine @results
end

注意:上面的代码是Ruby

答案 1 :(得分:0)

Scenario Outline:将为每个示例重复场景中的所有步骤。 如果只想对每个选项卡重复最后一步,则需要重写方案:

@Workflow
Scenario Outline: Perform
   Given I click on Maglink 
   When I Click AllMagLink & Select Exception  on Advanced Filters 
   And I Send the Value After Reading Form ExcelSheet
   And I Click on Search
   And I Click on subregLink
   And I Get The xxxx From xxxx Tab
   Then I Click on Apple and Validate it in AllTasks
   And I Click on Mango and Validate it in AllTasks
   And I Click on PineApple and Validate it in AllTasks

缺点是,如果先前的选项卡之一失败,它将跳过后续步骤(其他选项卡)。