TestNG 强大的测试框架(2)-数据驱动:Excel作为数据来源
上一章,我们了解了TestNG框架的数据驱动的基本原理,这章我们来写一个使用Excel作为数据来源的Demo。阐述不清的地方请大家指出来,谢谢
为什么我们要用Excel、数据库等来存储我们的数据,而不是直接写在脚本里。就是为了更好的维护开发脚本的稳定新,所以我们一般会把数据源分离出来。java中如何实现读取Excel文件里的数据呢?Apache为我们提供了名叫POI的API,它允许程序员使用Java程序创建,修改和显示MS Office文件。
POI的jar包下载地址:https://www.apache.org/dyn/closer.lua/poi/release/bin/poi-bin-3.15-20160924.zip
把接口的信息填写在Excel文件里,下面的代码可以读取Excel文件里的内容,下面只是一个简单的demo:
/*
* getreadExcel():获取Excel里的内容,以二维数组形式返回[{用例名,接口链接}]
* @path:excel文件路径
* @filename:Excel文件名字
* @startrow:从第几行开始
* @totalrow:共多少行
* @sheetname:sheet名
*/
@SuppressWarnings({ "deprecation", "resource" })
public Object[][] getreadExcel(String path,String filename,int startRow,int totalrow,String sheetname) throws IOException{
Workbook workbook = null;
String[][] urllist = new String[totalrow][2];
File file = new File(path+"\\"+filename);//打开excel文件
System.out.println("excel file is "+file);
InputStream in = new FileInputStream(file);//读取excel文件,建立一个输入流
String fileExtensionName = filename.substring(filename.indexOf("."));
if (fileExtensionName.equals(".xlsx")) {
workbook = new XSSFWorkbook(in);
} else if (fileExtensionName.equals(".xls")) {
workbook = new HSSFWorkbook(in);
} else {
throw new IOException("wrong fileName");
}
org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheet(sheetname);
//对该行的列进行遍历
for(int n = 0 ; n < totalrow;n++){
String url = "";
Row row1 = sheet.getRow(n+startRow);//获取该sheet的行
for (int i=3;i<row1.getLastCellNum()-2;i++){
switch (row1.getCell(i).getCellType()) {
case Cell.CELL_TYPE_STRING:
switch (i) {
case 3:
url += "http://"+row1.getCell(i).getStringCellValue()+"";
break;
case 4:
url += ":"+row1.getCell(i).getStringCellValue();
break;
case 5:
url += row1.getCell(i).getStringCellValue()+"?";
break;
default:
url += row1.getCell(i).getStringCellValue()+"&";
break;
}
break;
case Cell.CELL_TYPE_NUMERIC:
url += row1.getCell(i).getNumericCellValue()+"&";
break;
default :
break;
}
}
urllist[n][0] = row1.getCell(0).getStringCellValue();
urllist[n][1] = url.substring(0, url.length()-1);
}
in.close();
workbook.close();
return urllist;
}
/*
* 读取Excel文件里的内容,以json数据的形式返回
* @path:excel文件路径
* @filename:Excel文件名字
* @row:第几行
* @lastcell:该行的最后一列
* @sheetname:sheet名
*/
@SuppressWarnings("resource")
public JSONObject getreadExceldata(String path,String filename,int row,int lastcell,String sheetname) throws IOException{
Workbook workbook = null;
File file = new File(path+"\\"+filename);//打开excel文件
System.out.println("excel file is "+file);
InputStream in = new FileInputStream(file);//读取excel文件,建立一个输入流
String fileExtensionName = filename.substring(filename.indexOf("."));
if (fileExtensionName.equals(".xlsx")) {
workbook = new XSSFWorkbook(in);
} else if (fileExtensionName.equals(".xls")) {
workbook = new HSSFWorkbook(in);
} else {
throw new IOException("wrong fileName");
}
org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheet(sheetname);
Row row1 = sheet.getRow(row);//获取该sheet的行
String data = row1.getCell(lastcell).getStringCellValue();
JSONObject jsondata = JSONObject.fromObject(data);
in.close();
workbook.close();
return jsondata;
}
浙公网安备 33010602011771号