重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍“测试驱动技术系列之:怎么从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;i4.我们可以把这两个方法作为工具方法,写入到工具类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中读取数据”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!
分享名称:测试驱动技术系列之:怎么从excel中读取数据
地址分享:http://cqcxhl.cn/article/ipcehs.html