0

我想使用 dataprovider 将数据直接传递到步骤定义而不从功能文件传递,因为我也想传递空值。这就是我正在做的事情。

场景:当该字段为空并单击提交时,用户应该获得空字段突出显示。在提供 nthier 或 Reg Id 或 PC 中的值后单击提交时

@Test(dataProvider = "getData")
    @When("^Submit is clicked after providing values in nethier or either of Reg Id or PC$")
    public void submit_is_clicked_after_providing_values_in_nethier_or_either_of_reg_id_something_or_pc_something(
            String regvalue, String pcvalue) throws Throwable {
//code
}

@DataProvider

    public Object[][] getData() {
        Object[][] data = new Object[3][2]; // 3 is number of combinations and 2 is number of values
        // 1st set
        data[0][0] = "Username1";
        data[0][1] = null;
        // 2nd set
        data[1][0] = null;
        data[1][1] = "Password1";
        // 3nd set
        data[2][0] = null;
        data[2][1] = null;
        return data;
}

我得到的错误是

步骤 [^Submit 在提供 nthier 或 Reg Id 或 PC$ 中的值后单击] 是用 2 个参数定义的工作区/CucumberProject.CitiCommCard/target/test-classes/'。但是,小黄瓜步骤有 0 个参数。

4

1 回答 1

1

您可以使用 yml 文件作为数据查找。对于 JSON 风格的测试,我会提倡这一点。因为您可以使用常规夹具或在中间过程中构建它。

所以你可以有这样的东西。

Given I have a valid request to create a user
But the username is invalid
Given I have a valid request to create a user
But the username is too short
# yaml file

user:
  create:
    issues:
      username:
        invalid: "Can't Use W3!rd char$"
        too_short: "usrnm"

然后您的步骤只需使用您使用的任何编程语言并将 yml 转换为数据查找(哈希/列表),并更改键。

于 2020-11-16T09:26:25.753 回答