循环给定数据上的特征文件

问题描述 投票:1回答:1

背景:

  1. 有超过500个用户。他们的用户名和密码存储在CSV文件中。
  2. 每个用户必须通过这个由18个场景组成的.feature文件。

问题:我知道我们可以使用data tablesscenario outline,但这里提到的数据仅限于相关场景,不适用于整个功能文件。 我希望一旦.feature完成执行第一行数据,它应该从CSV文件转到下一行,并继续执行直到CSV文件结束。

我尝试用MS Excel表替换数据表,使用(POI apache文件读取电子表格),但同样的事情发生了它只针对该特定场景运行。

例如。这是一个.feature文件

@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

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

我该怎么做?有没有JavaJunit方式,如果不可能在黄瓜?

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

java maven junit cucumber-jvm cucumber-serenity
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.