自动化数据驱动|Easy POI读取接口测试用例的excel

发布时间:2024年01月22日

在做的接口自动化测试中,把测试用例维护在excel表格中,通过Easy POI把用例中的行转成实体类对象,再通过testNG的@DataProvider注解把测试用例数据传递给测试方法执行用例。

一、pom引入

<!-- 表格读取工具 -->
<dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easypoi-annotation</artifactId>
    <version>4.2.0</version>
</dependency>

<dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easypoi-base</artifactId>
    <version>4.2.0</version>
</dependency>

二、实体类设计

2.1 用例表格示例

2.2 实体类设计

easy poi: 通过@Excel属性能够和excel的表头映射上去

??值的注意:实体类中需要有空参构造

只写了有参构造不写空参构造报错:Caused by: java.lang.RuntimeException: 创建对象异常

因为在读取excel数据的时候要利用空参构造创建对象

所以平时使用时要么不写任何构造,要么写空参+有参

public class CaseInfo {
    //easy poi: 通过@Excel属性能够和excel的表头映射上去
    
    @Excel(name = "序号(caseId)")
    private int caseId;

    @Excel(name = "接口模块(interface)")
    private String interfaceName;

    @Excel(name = "用例标题(title)")
    private String title;

    @Excel(name = "请求头(requestHeader)")
    private String requestHeader;

    //空参 有参构造方法
    //getter setter
    //......
}

三、读取excel数据

/**
     * 读取Excel指定sheet里面的全部数据
     * @param sheetNumber 读取第几个sheet,从0开始,表示我们常说的第1个
     * @return list集合
*/

    public static List<CaseInfo> readExcelSheetAllDatas(int sheetNumber){
        //读取用例文件
        File file = new File(XXX);
        //读取/导入excel的一些参数设置
        ImportParams importParams = new ImportParams();
        //设置读取第几个sheet
        importParams.setStartSheetIndex(sheetNumber);
        //读取Excel里面的数据(Easy Poi)
        List<CaseInfo> listDatas = ExcelImportUtil.importExcel(file, CaseInfo.class, importParams);
        return listDatas;
    }

3.1 常用的读取设置

ImportParams —— 导入excel的一些参数设置,读取第几个sheet,第几行...下面常用参数
  • setStartSheetIndex 从第几个sheet开始读,只这一个参数,默认读取当前设置的一个sheet
  • setStartRows? 从第几行开始读取
  • setReadRows? 读取多少行
  • setSheetNum 读取多个sheet用到
?ExcelImportUtil.importExcel (file, 实体类.class, importParams)

—— 读取Excel里面的数据(Easy Poi),返回实体类对象的List集合

 



? ? ?

文章来源:https://blog.csdn.net/weixin_40772077/article/details/135713843
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。