日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
測試驅(qū)動技術(shù)(TDD)系列之:從excel中讀取數(shù)據(jù)

 測試框架中參數(shù)化的一般形式

成都創(chuàng)新互聯(lián)公司是一家專注于成都做網(wǎng)站、網(wǎng)站設(shè)計、外貿(mào)營銷網(wǎng)站建設(shè)與策劃設(shè)計,岳塘網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:岳塘等地區(qū)。岳塘做網(wǎng)站價格咨詢:13518219792

在Junit4和TestNG框架中實現(xiàn)參數(shù)化的形式幾乎是一致的。

Junit4定義參數(shù)化數(shù)據(jù),代碼如下:

 
 
 
 
  1. public static Collection prepareData(){ 
  2. Object [][]object= {{1,2,3},{0,2,2},{0,3,3}}; 
  3. return Arrays.asList(object); 

 TestNG定義參數(shù)化數(shù)據(jù),代碼如下:

 
 
 
 
  1. @DataProvider 
  2.       public Object[][] dp1() { 
  3.         return new Object[][] { 
  4.           new Object[] { 1, 1,0 }, 
  5.           new Object[] { 2, 1,1 }, 
  6.           new Object[] { 2, 1,2 }, 
  7.         }; 
  8.       } 

 從excel中讀取測試驅(qū)動數(shù)據(jù)的實現(xiàn)思路

在前面的文章中,我詳細(xì)地講解了,java中數(shù)組的應(yīng)用,以及如何利用api來操控excel文件。接下來我就把在測試框架中讀取excel進行接口測試參數(shù)化的核心代碼以及實現(xiàn)思路講解給大家。

1.首先我們看到測試數(shù)據(jù)的參數(shù)化返回值是Object [][] object,那么我們就需要寫一個讀取excel的方法,該方法的返回值是Object [][],方法可以定義為:Object[][] readExcel(String p_file,int p_sheetindex)

2.excel中讀取cell的名稱是通過行和列確認(rèn)的,而且不同類型的cell在讀取值時用到的api是不同的,我們寫一個讀取Cell值得方法,代碼實現(xiàn)如下:

 
 
 
 
  1. public static Object getCellVaule(Sheet p_sheet,int p_rowIndex,int p_cellIndex) { 
  2.  
  3.       Object value=null; 
  4.  
  5.        Row row = p_sheet.getRow(p_rowIndex); 
  6.  
  7.         Cell cell = row.getCell(p_cellIndex);    
  8.  
  9.         if(cell.getCellType()==CellType.NUMERIC) //判斷是數(shù)字類型 
  10.  
  11.         { 
  12.  
  13.         value= cell.getNumericCellValue();      
  14.  
  15.         } 
  16.  
  17.         else if(cell.getCellType()==CellType.STRING) //判斷是String類型 
  18.  
  19.         { 
  20.  
  21.         value=cell.getStringCellValue(); 
  22.  
  23.         } 
  24.  
  25.         else if(cell.getCellType()==CellType.BOOLEAN)  // 判斷是BOOLEAN類型 
  26.  
  27.         { 
  28.  
  29.         value=cell.getStringCellValue(); 
  30.  
  31.         } 
  32.  
  33.         else 
  34.  
  35.         { 
  36.  
  37.         value=cell.toString();    // 其他類型統(tǒng)一轉(zhuǎn)化成String類型 
  38.  
  39.         } 
  40.  
  41.         return value; 
  42.  
  43.     } 

 3.結(jié)合getCellVaule方法,我們編寫一個讀取完整excel值的方法,返回值為Object[][] ,代碼如下:

 
 
 
 
  1. public static Object[][] readExcel(String p_file,int p_sheetindex){ 
  2.  
  3.         Workbook workbook=null; 
  4.  
  5.         Object [][] data=null; 
  6.  
  7. try { 
  8.  
  9.        workbook = new XSSFWorkbook(new FileInputStream(p_file)); 
  10.  
  11.         Sheet sheet = workbook.getSheetAt(p_sheetindex); // 獲取第一個工作表.0代表第一個sheet頁 
  12.  
  13.         int iRowNum=sheet.getPhysicalNumberOfRows();  //獲取工作表中的行數(shù) 
  14.  
  15.         int iColumnNum= sheet.getRow(0).getPhysicalNumberOfCells(); //獲取工作表中的列數(shù)    
  16.  
  17.         data=new Object[iRowNum][iColumnNum];//通過行列數(shù),創(chuàng)建一個二維數(shù)組來保存cell中的數(shù)據(jù) 
  18.  
  19.         for(int i=0;i
  20.  
  21.         for(int j=0;j
  22.  
  23.         data[i][j]= getCellVaule(sheet,i,j);  //通過循環(huán)以及之前編寫好的讀取excel單元格值的方法,把cell中的數(shù)據(jù)保存到二維數(shù)組中 
  24.  
  25.         } 
  26.  
  27.         } 
  28.  
  29.         workbook.close(); 
  30.  
  31. } catch (IOException e) { 
  32.  
  33. // TODO Auto-generated catch block 
  34.  
  35. e.printStackTrace(); 
  36.  
  37.  
  38.         return data; 
  39.  
  40.     } 

 4.我們可以把這兩個方法作為工具方法,寫入到工具類ExcelTool中,方便在測試框架中應(yīng)用

測試用例中參數(shù)化的應(yīng)用

在測試用例中(以junit4為例),使用該工具方法實現(xiàn)參數(shù)化的代碼實現(xiàn)如下:

 
 
 
 
  1. @RunWith(Parameterized.class) 
  2. public class ParaDemo {  
  3. private Object input1;  
  4.     private Object input2;  
  5.     @Parameters  
  6.     public static Collection prepareData(){  
  7.     System.out.println("prepareData"); 
  8.     Object [][] object=ExcelTool.readExcel("D:\\TestData2.xlsx",0);  
  9.         return Arrays.asList(object);  
  10.     }  
  11.     public ParaDemo(Object input1,Object input2,Object expected){  
  12.        System.out.println("ParaDemo"); 
  13.         this.input1 = input1;  
  14.         this.input2 = input2;  
  15.     }  
  16.     @Test  
  17.     public void testEqual(){  
  18.         Assert.assertEquals(this.input1,this.input2);  
  19.     }  

 excel里保存的測試數(shù)據(jù)如下所示

運行測試用例,發(fā)現(xiàn)參數(shù)化成功執(zhí)行,如下圖所示


網(wǎng)站欄目:測試驅(qū)動技術(shù)(TDD)系列之:從excel中讀取數(shù)據(jù)
文章出自:http://www.5511xx.com/article/dhdhdps.html