首页 > 解决方案 > 如何使用数据提供者中的字符串列表运行测试 - Testng

问题描述

我有一个测试,它通过提供姓名、电话号码、主要联系方式在注册页面上创建记录。目标是测试相同的电话号码和联系方式,但名称的不同变体(例如:3 个名称)。测试应该运行 3 次。Name1 带有电话号码和联系方式,Name2 带有电话号码和联系方式,Name3 带有电话号码和联系方式

我正在尝试使用数据提供者为我的测试提供数据。但我不确定如何在数据提供者中提供名称列表并将其返回给我的测试。

public List<String> names;

@DataProvider(name="TestData")
public object[][] getTestData() {
    names = new ArrayList<String>();
    names.add("Name1");
    names.add("Name2");
    names.add("Name3");
    Object[][] returnNames = new Object[names.size()][];
    for(int i=0;i<names.size(); i++) {
        returnNames[i] = new Object[]{names.get(i)};
    }

    return new Object[][] {
    {returnNames, "1234567890", "Phone"} // (->Problem 1:I am not sure if this is right)
    };
}

@Test(dataprovider="TestData")
public void testMethod(List<String> names, String phone, String modeOfContact) {
// (-> Problem 2: Is the parameter initialization right in @Test?)

//Code here

}

标签: javaseleniumtestngdataprovider

解决方案


可能最简单的方法是内联初始化数据数组:

@DataProvider(name="TestData")
public static Object[][] getTestData() {
    String phoneNumber = "123456789";
    String modeOfContact = "Phone";

    return new String[][] {
            {"Name1", phoneNumber, modeOfContact},
            {"Name2", phoneNumber, modeOfContact},
            {"Name3", phoneNumber, modeOfContact}
    };
}

推荐阅读