我是 selenium网络驱动程序的新手我有一个超过20个字段的搜索页面。 我创建了一个 excel文件,其中包含我希望通过我的测试传递的所有数据。我的excel文件将包含 20行,并且每行都会有 20列也是如此。 所以我的问题是我可以使用数据提供程序来做类似的事情,或者我只需要创建20个测试方法,对于每个方法,我应该读一行?提前致谢
答案 0 :(得分:1)
请考虑使用Apache POI库来完成此任务。
Apache POI的示例代码:
FileInputStream file = new FileInputStream(new File("C:\\test.xlsx"));
//Get the workbook instance for XLS file
XSSFWorkbook workbook = new XSSFWorkbook (file);
//Get first sheet from the workbook
XSSFSheet sheet = workbook.getSheetAt(0);
Row row = sheet.getRow(0);
String data = row.getCell(columnindex).getStringCellValue();
<强>的DataProvider 强>: @DataProvider将方法标记为为测试方法提供数据。带注释的方法必须返回Object [] []。想要从此DataProvider接收数据的@Test方法需要使用dataProvider名称等于此批注的名称。
属性:
name - 数据提供者的名称。如果未提供,则此数据提供者的名称将自动设置为方法名称。
parallel - 如果设置为true,则使用此数据提供程序生成的测试将并行运行。默认值为false。
@Dataprovider教程:http://seleniumeasy.com/testng-tutorials/dataprovider-in-testng
Dataprovider的示例代码:
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class DataProviderExample{
//This test method declares that its data should be supplied by the Data Provider
// "getdata" is the function name which is passing the data
// Number of columns should match the number of input parameters
@Test(dataProvider="getData")
public void setData(String username, String password)
{
System.out.println("you have provided username as::"+username);
System.out.println("you have provided password as::"+password);
}
@DataProvider
public Object[][] getData()
{
//Rows - Number of times your test has to be repeated.
//Columns - Number of parameters in test data.
Object[][] data = new Object[3][2];
// 1st row
data[0][0] ="sampleuser1";
data[0][1] = "abcdef";
// 2nd row
data[1][0] ="testuser2";
data[1][1] = "zxcvb";
// 3rd row
data[2][0] ="guestuser3";
data[2][1] = "pass123";
return data;
}
}