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;
	}

  

posted on 2017-04-26 15:19  菜鸟进阶历程  阅读(1229)  评论(0)    收藏  举报

导航