废话不多讲,直接进主题,怎么实现用Excel配置测试数据,用dataProvider来调用测试数据。
jxl目前来看只支持.xls格式的文件,所以我们采用Apache POI来实现对.xlsx的操作,详细信息请参见:POI
数据准备
创建数据文件,并写入内容
此处我们只是做个实验,把文件放在了C盘下,在实际的项目中可以放在整个项目中。
数据读取
利用POI来读取Excel数据,步骤如下:
- 下载相应的POI Jar包,并添加到项目中
- 创建一个Excel处理类来读取内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41public class ExcelUtils {
private static XSSFSheet ExcelWSheet;
private static XSSFWorkbook ExcelWBook;
public static Object[][] getTableArray(String FilePath, String SheetName) throws Exception {
Object[][] tabArray = null;
try {
FileInputStream ExcelFile = new FileInputStream(FilePath); // Access the required test data sheet
ExcelWBook = new XSSFWorkbook(ExcelFile);
ExcelWSheet = ExcelWBook.getSheet(SheetName);
int ci, cj;
int totalRows = ExcelWSheet.getLastRowNum();
int totalCols = ExcelWSheet.getRow(0).getLastCellNum();
tabArray = new String [totalRows] [totalCols];
ci = 0;
for(int i = 1; i <=totalRows; i++, ci++){
cj = 0;
XSSFRow row = ExcelWSheet.getRow(i);
for (int j = 0; j < totalCols; j++, cj++){
XSSFCell cell = row.getCell(j);
String value = cell.toString();
tabArray[ci][cj] = value;
}
}
}
catch (FileNotFoundException e){
System.out.println("Could not read the Excel sheet");
e.printStackTrace();
}
catch (IOException e){
System.out.println("Could not read the Excel sheet");
e.printStackTrace();
}
return(tabArray);
}
}
数据调用
创建一个测试脚本,如下所示:1
2
3
4
5
6
7
8
9
10
11
12@Test(dataProvider = "Authentication")
public void f(String a, String b) {
System.out.println(a + " " + b);
System.out.println(this.toString());
}
@DataProvider
public Object[][] Authentication() throws Exception{
Object[][] testObjArray = ExcelUtils.getTableArray("C:/test.xlsx","search");
return (testObjArray);
}
运行结果
执行脚本后,结果显示如下: