在给定数据上循环功能文件

时间:2019-04-12 04:25:07

标签: java maven junit cucumber-jvm cucumber-serenity

背景

  1. 有500多个用户。他们的用户名和密码存储在CSV文件中。
  2. 每个用户都必须通过此.feature文件,该文件包含18种情况。

问题: 我知道我们可以使用data tablesscenario outline,但是这里提到的数据将仅限于关联的方案,而不仅限于整个功能文件。
我只想{{1 }}执行完第一行数据后,应从CSV文件转到下一行,并继续执行直到CSV文件结束。

我尝试将数据表替换为MS Excel工作表,使用(.feature个文件读取电子表格),但同样的事情再次发生,它仅在特定情况下运行。

例如这是一个POI apache文件

.feature

现在,方案一继续运行500次(csv文件中的行数),一旦所有数据完成,它将启动第二种方案。我想要的是两种情况 应该在第1行运行,然后两种情况都应该在第2行运行,依此类推500次。

我该怎么办?是否有@regression @userValidation Feature: User permission validation Scenario Outline: Verify that user is able to login Given I am on login page When I enter "username" and "password" Then I see new user successfully loggedin Examples: | username |password| // picked from excel sheet | uname |pwd | // picked from excel sheet Scenario: Verify that user can change the password Given I am on user profile page When I enter change password twice Then I get password successfully changed pop-up Java的方式(如果在黄瓜中无法做到)?

我在Windows上使用Java,Selenium WebDriver,JUnit,Cucumber,Maven

1 个答案:

答案 0 :(得分:0)

一种方法是在功能文件的每个场景中添加示例,您已经在从外部源读取数据,因此它不会在场景级别复制数据。仍然需要为每个场景添加示例。例如:

@regression @userValidation
Feature: User permission validation

Scenario Outline: Verify that user is able to login
    .....
Examples:
      | username |password|  // picked from excel sheet
      | uname    |pwd     |  // picked from excel sheet

Scenario Outline: Verify that user can change the password
  ...
Examples:
      | username |password|  // picked from excel sheet
      | uname    |pwd     |  // picked from excel sheet

在这种情况下,您需要注意每个方案的执行顺序。如果您使用gherkin with qaf,则可能如下所示:

@regression @userValidation
Feature: User permission validation

 Scenario: Verify that user is able to login
    .....
 Examples: {'datafile':'resources/usersdata.csv'}

 Scenario: Verify that user can change the password
  ...
 Examples: {'datafile':'resources/usersdata.csv'}

此外,对于最新的BDD2 syntax,您可以使用以下功能文件:

@regression @userValidation
@datafile:resources/usersdata.csv
Feature: User permission validation

 Scenario: Verify that user is able to login
    .....

 Scenario: Verify that user can change the password
  ...

关于执行顺序,qaf确保按脚本在功能文件中定义的顺序运行脚本。仍然可以在使用BDD2语法时在元数据中指定优先级,例如,第一种情况下为@priority:1,第二种情况下为@priority:2,等等。

上述情况的其他替代方案是根据条件更改优先方案,并将其视为background,为此请参考how to use background with examples