iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >测试驱动技术系列之:怎么从excel中读取数据
  • 657
分享到

测试驱动技术系列之:怎么从excel中读取数据

2023-06-15 17:06:17 657人浏览 独家记忆
摘要

这篇文章主要介绍“测试驱动技术系列之:怎么从excel中读取数据”,在日常操作中,相信很多人在测试驱动技术系列之:怎么从excel中读取数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”测试驱动技术系列之:怎

这篇文章主要介绍“测试驱动技术系列之:怎么从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进行接口测试参数化的核心代码以及实现思路讲解给大家。

首先我们看到测试数据的参数化返回值是Object [][] object,那么我们就需要写一个读取excel的方法,该方法的返回值是Object  [][],方法可以定义为:Object[][] readExcel(String p_file,int p_sheetindex)

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

结合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;i<iRowNum;i++) {          for(int j=0;j<iColumnNum;j++) {          data[i][j]= getCellVaule(sheet,i,j);  //通过循环以及之前编写好的读取excel单元格值的方法,把cell中的数据保存到二维数组中          }          }          workbook.close();  } catch (IOException e) {  // TODO Auto-generated catch block  e.printStackTrace();  }          return data;      }

我们可以把这两个方法作为工具方法,写入到工具类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中读取数据

到此,关于“测试驱动技术系列之:怎么从excel中读取数据”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 测试驱动技术系列之:怎么从excel中读取数据

本文链接: https://www.lsjlt.com/news/281148.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 测试驱动技术系列之:怎么从excel中读取数据
    这篇文章主要介绍“测试驱动技术系列之:怎么从excel中读取数据”,在日常操作中,相信很多人在测试驱动技术系列之:怎么从excel中读取数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”测试驱动技术系列之:怎...
    99+
    2023-06-15
  • 测试驱动技术系列之怎么用pytest实现测试数据驱动
    本篇内容主要讲解“测试驱动技术系列之怎么用pytest实现测试数据驱动”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“测试驱动技术系列之怎么用pytest实现测试数据驱动”吧!一组参数化数据定义参...
    99+
    2023-06-15
  • 数据驱动测试DDT之Selenium读取Excel文件
    (1)安装xlrd pip3 install xlrd (2)示例脚本 ​import pytest import xlrd def get_data(): ...
    99+
    2022-11-12
  • 测试驱动技术系列之如何理解操控excel的核心api
    这篇文章主要讲解了“测试驱动技术系列之如何理解操控excel的核心api”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“测试驱动技术系列之如何理解操控excel的核心api”吧!测试数据格式展...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作