在进行场景概述和编写功能文件的cucumber
测试时,我目前在示例表中有25个自变量,而我在这里看到的是它们:
Scenario Outline: Create ABC
Given I open the application
When I enter username as "<username>"
And I enter password as "<password>"
Then I enter title as "<title>"
And press submit
Examples:
| username | password | title |
| Rob | xyz1 | title1 |
| Bob | xyz1 | title2 |
我只有25个论点。是否可以将整个示例表传输为datatable
,而不是步骤文件中的25个参数?
答案 0 :(得分:0)
在功能文件中放置25个参数听起来确实很多。以下是可能的方法:
仅将每行的ID放在示例表中。这样一来,每行就会迭代一行,并且在您的方案中,您使用此ID从外部源中提取数据。
将每一行转换为JSON,这样示例表中只能包含一列数据,或者仅将某些数据转换为JSON并保留示例表中的基本数据。
编辑外部工具中的数据并将其导入到功能文件中。诸如CukeTest之类的工具支持将CSV文件中的数据导入示例中,如下所示:
答案 1 :(得分:0)
拥有此功能文件很好,您需要在步骤定义中具有以下注释,才能将示例表中的所有数据传输到步骤定义文件。
@Given("^I open the application$")
@When("^I enter username as \"([^\"]*)\"$")
@When("^I enter password as \"([^\"]*)\"$")
@Then("^I enter title as \"([^\"]*)\"$")
@Then("^press submit$")
步骤定义文件
package steps;
import cucumber.api.PendingException;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
public class StepDefs {
@Given("^I open the application$")
public void i_open_the_application() throws Throwable {
System.out.println("=============================================================");
System.out.println(" Opening the Application ... ");
}
@When("^I enter username as \"([^\"]*)\"$")
public void i_enter_username_as_username(String username) throws Throwable {
System.out.println(" Username: " + username);
}
@When("^I enter password as \"([^\"]*)\"$")
public void i_enter_password_as_password(String password) throws Throwable {
System.out.println(" Password: " + password);
}
@Then("^I enter title as \"([^\"]*)\"$")
public void i_enter_title_as_title(String title) throws Throwable {
System.out.println(" Title: " + title);
}
@Then("^press submit$")
public void press_submit() throws Throwable {
System.out.println(" SUBMIT");
System.out.println("=============================================================");
}
}
我已经对其进行了测试,并且使用您的数据表可以正常工作。
但是我建议不要使用黄瓜数据表,而可以将测试数据插入Excel文件中,并使用 Apache POI 库
答案 2 :(得分:0)
您可以通过使用qaf-gherkin来实现,您可以在其中从csv / excel / xml / json / database之类的外部数据源中加载示例。在这种情况下,您的功能文件将如下所示:
Scenario Outline: Create ABC
Given I open the application
When I enter username as "<username>"
And I enter password as "<password>"
Then I enter title as "<title>"
And press submit
Examples:{'datafile':'resources/testdata.txt'}
您的数据文件将如下所示:
#col.separator=|
username|password|title
Rob|xyz1|title1
Bob| xyz1|title2
上图是带有|的csv(字符分隔值)数据提供程序的示例。作为分隔符。您还可以使用其他数据提供程序来提供excel / xml / json / database中的任何数据。