java - 如何使用数据提供者中的字符串列表运行测试 - 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
}
解决方案
可能最简单的方法是内联初始化数据数组:
@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}
};
}
推荐阅读
- typescript - 为什么在同一范围内显式键入时,打字稿编译器不能告诉值已定义
- curl - 为什么这个 curl 命令在 groovy 中执行时会失败?
- vba - 在 VBA 生成的电子邮件中删除签名前的空行
- oauth - 可以使用代理辅助登录和 ADAL 检索授权代码吗?
- flutter - 如何在 Flutter 的导航器中使用 WillPopScope?
- java - Hibernate 找不到实体构造函数
- google-sheets - 如何突出显示包含 Google 工作表中特定文本的单元格
- java - 由于文件有空行和标题,代码失败并出现 Nullexecptionerror
- regex - 正则表达式返回找到组 IF 字符串不以'开头 - VSCode - 搜索/替换
- apache-spark - 将数据框的架构保存在 S3 位置