dataProvider实现数据驱动

废话不多讲,直接进主题,怎么实现用Excel配置测试数据,用dataProvider来调用测试数据。

jxl目前来看只支持.xls格式的文件,所以我们采用Apache POI来实现对.xlsx的操作,详细信息请参见:POI

数据准备

创建数据文件,并写入内容

Test Data

此处我们只是做个实验,把文件放在了C盘下,在实际的项目中可以放在整个项目中。

数据读取

利用POI来读取Excel数据,步骤如下:

  1. 下载相应的POI Jar包,并添加到项目中
  2. 创建一个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
    41
    public 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);
}

运行结果

执行脚本后,结果显示如下:
Test Result

唐胡璐 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
分享创造价值,您的支持将鼓励我继续前行!