背景:
.feature
文件。问题:我知道我们可以使用data tables
,scenario 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次。
我该怎么做?有没有Java
或Junit
方式,如果不可能在黄瓜?
我在Windows上使用Java,Selenium WebDriver,JUnit,Cucumber,Maven
其中一种方法是在功能文件中的每个方案中添加示例,您已经从外部源读取数据,因此它不会在方案级别复制数据。您还需要为每个方案添加示例。例如:
@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。