测试驱动技术系列之:怎么从excel中读取数据(junit,编程语言)

时间:2024-05-03 08:52:55 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

测试框架中参数化的一般形式

在Junit4和TestNG框架中实现参数化的形式几乎是一致的。

Junit4定义参数化数据,代码如下:

publicstaticCollectionprepareData(){Object[][]object={{1,2,3},{0,2,2},{0,3,3}};returnArrays.asList(object);}

TestNG定义参数化数据,代码如下:

@DataProviderpublicObject[][]dp1(){returnnewObject[][]{newObject[]{1,1,0},newObject[]{2,1,1},newObject[]{2,1,2},};}

从excel中读取测试驱动数据的实现思路

在前面的文章中,我详细地讲解了,java中数组的应用,以及如何利用api来操控excel文件。接下来我就把在测试框架中读取excel进行接口测试参数化的核心代码以及实现思路讲解给大家。

1.首先我们看到测试数据的参数化返回值是Object [][] object,那么我们就需要写一个读取excel的方法,该方法的返回值是Object [][],方法可以定义为:Object[][] readExcel(String p_file,int p_sheetindex)

2.excel中读取cell的名称是通过行和列确认的,而且不同类型的cell在读取值时用到的api是不同的,我们写一个读取Cell值得方法,代码实现如下:

publicstaticObjectgetCellVaule(Sheetp_sheet,intp_rowIndex,intp_cellIndex){Objectvalue=null;Rowrow=p_sheet.getRow(p_rowIndex);Cellcell=row.getCell(p_cellIndex);if(cell.getCellType()==CellType.NUMERIC)//判断是数字类型{value=cell.getNumericCellValue();}elseif(cell.getCellType()==CellType.STRING)//判断是String类型{value=cell.getStringCellValue();}elseif(cell.getCellType()==CellType.BOOLEAN)//判断是BOOLEAN类型{value=cell.getStringCellValue();}else{value=cell.toString();//其他类型统一转化成String类型}returnvalue;}

3.结合getCellVaule方法,我们编写一个读取完整excel值的方法,返回值为Object[][] ,代码如下:

publicstaticObject[][]readExcel(Stringp_file,intp_sheetindex){Workbookworkbook=null;Object[][]data=null;try{workbook=newXSSFWorkbook(newFileInputStream(p_file));Sheetsheet=workbook.getSheetAt(p_sheetindex);//获取第一个工作表.0代表第一个sheet页intiRowNum=sheet.getPhysicalNumberOfRows();//获取工作表中的行数intiColumnNum=sheet.getRow(0).getPhysicalNumberOfCells();//获取工作表中的列数data=newObject[iRowNum][iColumnNum];//通过行列数,创建一个二维数组来保存cell中的数据for(inti=0;i<iRowNum;i++){for(intj=0;j<iColumnNum;j++){data[i][j]=getCellVaule(sheet,i,j);//通过循环以及之前编写好的读取excel单元格值的方法,把cell中的数据保存到二维数组中}}workbook.close();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returndata;}

4.我们可以把这两个方法作为工具方法,写入到工具类ExcelTool中,方便在测试框架中应用

测试用例中参数化的应用

在测试用例中(以junit4为例),使用该工具方法实现参数化的代码实现如下:

@RunWith(Parameterized.class)publicclassParaDemo{privateObjectinput1;privateObjectinput2;@ParameterspublicstaticCollectionprepareData(){System.out.println("prepareData");Object[][]object=ExcelTool.readExcel("D:\\TestData2.xlsx",0);returnArrays.asList(object);}publicParaDemo(Objectinput1,Objectinput2,Objectexpected){System.out.println("ParaDemo");this.input1=input1;this.input2=input2;}@TestpublicvoidtestEqual(){Assert.assertEquals(this.input1,this.input2);}}

excel里保存的测试数据如下所示

测试驱动技术系列之:怎么从excel中读取数据

运行测试用例,发现参数化成功执行,如下图所示

测试驱动技术系列之:怎么从excel中读取数据
 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:测试驱动技术系列之:怎么从excel中读取数据的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:什么是IDEA、Eclipse、Maven下一篇:

3 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18