【发布时间】:2017-11-08 16:42:29
【问题描述】:
我是使用 selenium 和 java 的 Page-Object 模型自动化的新手。我正在使用页面对象模型并将每个页面作为一个类,并将该页面中的操作作为方法。使用 excel 来保持读取测试数据。我有一个使用各种参数(如客户编号、策略编号、姓氏、名字、webrefernce、电子邮件等等)搜索客户的测试......现在我必须在方法签名中提供所有参数,否则数据提供者的测试会失败不匹配错误。我有一个 GetData 方法,它提供指定的 excelsheet 中的字符串数组。
是否可以将参数设为可选,以便我可以在测试方法的签名中仅指定特定测试所需的参数。?在实际测试中有15个参数和附加组合。 (如果这不可能,我必须将数据分成 16 个不同的选项卡,并分别为每个测试定义数据提供者)。或任何其他方式来实现这一目标?谢谢
当前代码:
@DataProvider(name="ClientSearchData")
public String[][] getTestData() {
String[][] testRecords = getData("TestData_igo4.xlsx","ClientSearch");
return testRecords;
}
@BeforeTest
public void setUp() {
init();
}
@Test(dataProvider="ClientSearchData")
public void verifyClientSearchByClientNumber(String clientnumber, String policynumber, String surname, String webreference, String email) {
//code for search by clientnumber
}
@Test(dataProvider="ClientSearchData")
public void verifyClientSearchByPolicyNumber(String clientnumber, String policynumber, String surname, String webreference, String email) {
//Code for search by policynumber
}
我想要类似下面的东西以避免每个测试的不必要参数..
@DataProvider(name="ClientSearchData")
public String[][] getTestData() {
String[][] testRecords = getData("TestData.xlsx","ClientSearch");
return testRecords;
}
@BeforeTest
public void setUp() {
init();
}
@Test(dataProvider="ClientSearchData")
public void verifyClientSearchByClientNumber(String clientnumber) {
//code for search by clientnumber
}
@Test(dataProvider="ClientSearchData")
public void verifyClientSearchByPolicyNumber(String policynumber) {
//Code for search by policynumber
}
【问题讨论】:
-
为具有 getter 和 setter 方法的 ClientSearchData 创建一个数据对象。使用 setter 在 excel 访问代码中设置数据。从数据提供者返回 new Object[][] - {{ new ClientSearchDO(name,id...) },{ new ClientSearchDO(name,id...)}}。在测试方法中更改参数以键入 ClientSearchDO。通过 getter 方法访问相关数据。也检查一下——testng.org/doc/documentation-main.html#parameters-dataproviders
标签: java selenium-webdriver testng testng-dataprovider testng-eclipse