白盒测试的学习之路----(五)TestNG的参数分离

时间:2024-06-21 18:06:26

之前的测试用例直接嵌套在代码中,不便于维护和测试设计,应该单独把测试用例放在excel内,然后程序从中读取数据到相应的接口内即可。使用ava程序对Microsoft Office格式档案读和写的功能提供的POI库就可以完成读取数据的功能,而其中又主要使用的是HSSF类,该类 提供读写Microsoft Excel格式档案的功能。编写ParserExcel类,主要有三个函数:

白盒测试的学习之路----(五)TestNG的参数分离

其中,readExcelContent方法主要用于读取excel的sheet下的相关数据,保存到数组Object中,并返回;showContent是自己测试的时候,打印出读取的数据所用,getCellFormatValue主要是用于将从excel中读取的数据进行格式转换,判断当前Cell的Type,然后进行各种处理;核心代码如下:

public Object[][] readExcelContent(String sheetName) {
      sheet = wb.getSheet(sheetName);
      int rowNum = sheet.getLastRowNum();
     //getRow(int rownum) ,Returns the logical row (not physical) 0-based.
    row = sheet.getRow(2);
     //getPhysicalNumberOfCells:Gets the number of defined cells (NOT number of cells in the actual row!)
    int colNum = row.getPhysicalNumberOfCells();
    Object[][] ExcelInfo = new Object[rowNum-3][colNum-1];
    for (int i = 0; i < rowNum-3; i++) {
   row = sheet.getRow(i + 3);
   for (int j = 0; j < colNum-1; j++) {
    ExcelInfo[i][j] = getCellFormatValue(row.getCell(j+1)).trim();
}
}
    return ExcelInfo;
}

测试用例简单设计如下:

白盒测试的学习之路----(五)TestNG的参数分离

然后修改测试程序代码:

public class testSourceCode {

static String tmp = "D:\\testcase.xls";
private static ParserExcel pe = new ParserExcel(tmp);

@Test(dataProvider="providerMethod")
public void testjudgeKindOfTriangle(String sa,String sb,String sc,String Expt) {
int a=Integer.parseInt(sa);
int b=Integer.parseInt(sb);
int c=Integer.parseInt(sc);
int tmp=Integer.parseInt(Expt);
int reslut =TriangleJudgeSourceCode.judgeKindOfTriangle(a,b,c);
Assert.assertEquals(reslut, tmp);
}

@DataProvider
public static Object[][] providerMethod(Method method){
String sheetName = method.getName();
System.out.println(sheetName);
return pe.readExcelContent(sheetName);
}

运行该测试程序,测试结果如下:

白盒测试的学习之路----(五)TestNG的参数分离