您好,登錄后才能下訂單哦!
這篇文章主要介紹“測試驅動技術系列之:怎么從excel中讀取數據”,在日常操作中,相信很多人在測試驅動技術系列之:怎么從excel中讀取數據問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”測試驅動技術系列之:怎么從excel中讀取數據”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
測試框架中參數化的一般形式
在Junit4和TestNG框架中實現參數化的形式幾乎是一致的。
Junit4定義參數化數據,代碼如下:
public static Collection prepareData(){ Object [][]object= {{1,2,3},{0,2,2},{0,3,3}}; return Arrays.asList(object); }
TestNG定義參數化數據,代碼如下:
@DataProvider public Object[][] dp1() { return new Object[][] { new Object[] { 1, 1,0 }, new Object[] { 2, 1,1 }, new Object[] { 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值得方法,代碼實現如下:
public static Object getCellVaule(Sheet p_sheet,int p_rowIndex,int p_cellIndex) { Object value=null; Row row = p_sheet.getRow(p_rowIndex); Cell cell = row.getCell(p_cellIndex); if(cell.getCellType()==CellType.NUMERIC) //判斷是數字類型 { value= cell.getNumericCellValue(); } else if(cell.getCellType()==CellType.STRING) //判斷是String類型 { value=cell.getStringCellValue(); } else if(cell.getCellType()==CellType.BOOLEAN) // 判斷是BOOLEAN類型 { value=cell.getStringCellValue(); } else { value=cell.toString(); // 其他類型統一轉化成String類型 } return value; }
3.結合getCellVaule方法,我們編寫一個讀取完整excel值的方法,返回值為Object[][] ,代碼如下:
public static Object[][] readExcel(String p_file,int p_sheetindex){ Workbook workbook=null; Object [][] data=null; try { workbook = new XSSFWorkbook(new FileInputStream(p_file)); Sheet sheet = workbook.getSheetAt(p_sheetindex); // 獲取第一個工作表.0代表第一個sheet頁 int iRowNum=sheet.getPhysicalNumberOfRows(); //獲取工作表中的行數 int iColumnNum= sheet.getRow(0).getPhysicalNumberOfCells(); //獲取工作表中的列數 data=new Object[iRowNum][iColumnNum];//通過行列數,創建一個二維數組來保存cell中的數據 for(int i=0;i<iRowNum;i++) { for(int j=0;j<iColumnNum;j++) { data[i][j]= getCellVaule(sheet,i,j); //通過循環以及之前編寫好的讀取excel單元格值的方法,把cell中的數據保存到二維數組中 } } workbook.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return data; }
4.我們可以把這兩個方法作為工具方法,寫入到工具類ExcelTool中,方便在測試框架中應用
測試用例中參數化的應用
在測試用例中(以junit4為例),使用該工具方法實現參數化的代碼實現如下:
@RunWith(Parameterized.class) public class ParaDemo { private Object input1; private Object input2; @Parameters public static Collection prepareData(){ System.out.println("prepareData"); Object [][] object=ExcelTool.readExcel("D:\\TestData2.xlsx",0); return Arrays.asList(object); } public ParaDemo(Object input1,Object input2,Object expected){ System.out.println("ParaDemo"); this.input1 = input1; this.input2 = input2; } @Test public void testEqual(){ Assert.assertEquals(this.input1,this.input2); } }
excel里保存的測試數據如下所示
運行測試用例,發現參數化成功執行,如下圖所示
到此,關于“測試驅動技術系列之:怎么從excel中讀取數據”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。