selenium webdriver读取excel进行数据驱动测试

最近做自动化需要从文件读取数据做参数化,网上发现一个不错的解决方案。
准备:新建一个excel文件,文件名为测试类名,sheet名为测试方法名
        excel第一行为标题,从第二行开始为测试数据
        build path:jxl.jar
code:
  1 import java.io.FileInputStream;
  2 import java.io.InputStream;
  3 import java.util.HashMap;
  4 import java.util.Iterator;
  5 import java.util.Map;
  6 
  7 import org.testng.Assert;
  8 
  9 import jxl.*;
 10 
 11 /**
 12  * Excel放在Data文件夹下

13 * Excel命名方式:测试类名.xls

14 * Excel的sheet命名方式:测试方法名

15 * Excel第一行为Map键值

16 * 代码参考郑鸿志的Blog 17 * {@link www.zhenghongzhi.cn/post/42.html} 18 * @ClassName: ExcelDataProvider 19 * @Description: TODO(读取Excel数据) 20 */ 21 public class ExcelDataProvider implements Iterator { 22 23 private Workbook book = null; 24 private Sheet sheet = null; 25 private int rowNum = 0; 26 private int currentRowNo = 0; 27 private int columnNum = 0; 28 private String[] columnnName; 29 30 public ExcelDataProvider(String classname, String methodname) { 31 32 try { 33 34 int dotNum = classname.indexOf("."); 35 36 if (dotNum > 0) { 37 classname = classname.substring(classname.lastIndexOf(".") + 1, 38 classname.length()); 39 } 40 //从/data文件夹下读取以类名命名的excel文件 41 String path = "data/" + classname + ".xls"; 42 InputStream inputStream = new FileInputStream(path); 43 44 book = Workbook.getWorkbook(inputStream); 45 //取sheet 46 sheet = book.getSheet(methodname); 47 rowNum = sheet.getRows(); 48 Cell[] cell = sheet.getRow(0); 49 columnNum = cell.length; 50 columnnName = new String[cell.length]; 51 52 for (int i = 0; i < cell.length; i++) { 53 columnnName[i] = cell[i].getContents().toString(); 54 } 55 this.currentRowNo++; 56 57 } catch (Exception e) { 58 e.printStackTrace(); 59 Assert.fail("unable to read Excel data"); 60 } 61 } 62 63 public boolean hasNext() { 64 65 if (this.rowNum == 0 || this.currentRowNo >= this.rowNum) { 66 67 try { 68 book.close(); 69 } catch (Exception e) { 70 e.printStackTrace(); 71 } 72 return false; 73 } else { 74 // sheet下一行内容为空判定结束 75 if ((sheet.getRow(currentRowNo))[0].getContents().equals("")) 76 return false; 77 return true; 78 } 79 } 80 81 public Object[] next() { 82 83 Cell[] c = sheet.getRow(this.currentRowNo); 84 Map data = new HashMap(); 85 // List list = new ArrayList(); 86 87 for (int i = 0; i < this.columnNum; i++) { 88 89 String temp = ""; 90 91 try { 92 temp = c[i].getContents().toString(); 93 } catch (ArrayIndexOutOfBoundsException ex) { 94 temp = ""; 95 } 96 97 // if(temp != null&& !temp.equals("")) 98 // list.add(temp); 99 data.put(this.columnnName[i], temp); 100 } 101 Object object[] = new Object[1]; 102 object[0] = data; 103 this.currentRowNo++; 104 return object; 105 } 106 107 public void remove() { 108 throw new UnsupportedOperationException("remove unsupported."); 109 } 110 }
View Code

查看作者原文请点击这里

你可能感兴趣的:(selenium webdriver读取excel进行数据驱动测试)