在功能文件中输入表

时间:2018-08-29 05:19:24

标签: java cucumber

在进行场景概述和编写功能文件的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个参数?

3 个答案:

答案 0 :(得分:0)

在功能文件中放置25个参数听起来确实很多。以下是可能的方法:

  1. 仅将每行的ID放在示例表中。这样一来,每行就会迭代一行,并且在您的方案中,您使用此ID从外部源中提取数据。

  2. 将每一行转换为JSON,这样示例表中只能包含一列数据,或者仅将某些数据转换为JSON并保留示例表中的基本数据。

  3. 编辑外部工具中的数据并将其导入到功能文件中。诸如CukeTest之类的工具支持将CSV文件中的数据导入示例中,如下所示:

enter image description here

答案 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中的任何数据。