提问者:小点点

有没有办法不用传入特征文件,直接在Step定义中传入数据?


我想使用数据提供者直接将数据传递到步骤定义中,而不从特征文件传递,因为我也想传递空值。这就是我正在做的。

场景:当字段为空并单击提交时,用户应该突出显示空字段。在nethier或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;
}

我得到的错误是

步骤 [^在 nethier 或 Reg Id 或 PC$ 中的任何一个中提供值后单击提交] 在 file:/D:/Eclipse-Workspace/CucumberProject.CitiCommCard/target/test-classes/' 中的 'com.commcard.stepdefinition.StepDef.submit_is_clicked_after_providing_values_in_nethier_or_either_of_reg_id_something_or_pc_something(String,String) 定义 2 个参数。但是,小cucumber步骤有 0 个参数。


共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 转换为数据查找(哈希/列表),并更改键。