[Java 接口自动化框架]-优化篇02(EasyExcel写入不同sheet)

2021/12/01号记录:

Java 接口自动化框架优化:EasyExcel写入不同sheet

    需求:执行一次testng.xml的所有测试用例的测试结果存入1个Excel,不同的Sheet中。

    发现问题:做Java web接口自动化测试时发现,每个TestCase用例写入excel都会新生成1个新的Excel覆盖之前用例的数据,并不会追加插入数据。

    解决方法:

方式1:想到用之前BufferedWriter写入csv的方式,这种可以做到追加数据,未尝试是否可以追加写入不同的sheet中--->以后有空可以尝试下。

方式2:因Java接口自动化框架中,本次写入Excel用的是EasyExcel,那么就尝试用这种方式写入excel解决此问题:通过ExcelWriter写入不同sheet的方式。

一、通过ExcelWriter写入不同sheet的说明

1、ExcelUtil.java工具类:

    /**
     * 写到不同的sheet
     * @param excelWriter excelWriter
     * @param datalist 写入的数据
     * @param sheetName   sheet名称
     */
    public static void excelWriter(ExcelWriter excelWriter, List datalist, String sheetName) {
        //指定不同的sheet
        WriteSheet writeSheet = EasyExcel.writerSheet(sheetName).head(ApiDataBean.class).build();
        //写入excel
        excelWriter.write(datalist, writeSheet);
    }
    /**
     * finish关闭写入流
     * @param excelWriter excelWriter
     */
    public static void closeWriter(ExcelWriter excelWriter){
        if(excelWriter !=null){
            excelWriter.finish();
        }
    }

2、实体类:ExcelDataBean

package com.ciphergateway.bean;
 
import lombok.Data;
 
import java.util.List;
 
@Data
public class ExcelDataBean {
    private String sheetName;
    private List datalist;
 
}

3、服务类和用例类

//BaseRequest.java
//初始化resultList
protected static List resultList=new ArrayList<>();
 
//用例1
public class RoleTest extends BaseRequest{
    @AfterTest
    public void teardown() throws Exception {
        //当前用例的数据存储到list
        ExcelDataBean excelData=new ExcelDataBean();
        excelData.setSheetName("角色管理");
        excelData.setDatalist(dataList_w);
        resultList.add(excelData);
        
    }
}

//用例2:
public class UserTest extends BaseRequest{
    @AfterTest
    public void teardown() throws Exception {
       //当前用例的数据存储到list
        ExcelDataBean excelData=new ExcelDataBean();
        excelData.setSheetName("用户管理");
        excelData.setDatalist(dataList_w);
        resultList.add(excelData);
 
       //最后1个用例一起写入Excel中
        String filename="src/data/testcase/apiData_result.xlsx";
        ExcelWriter excelWriter = EasyExcel.write(filename).build();
        for(ExcelDataBean excelData2:resultList){
            String sheet=excelData2.getSheetName();
            List dataList=excelData2.getDatalist();
            ExcelUtil.excelWriter(excelWriter,dataList,sheet);
        }
        ExcelUtil.closeWriter(excelWriter);

     }
}

4、写入结果:

[Java 接口自动化框架]-优化篇02(EasyExcel写入不同sheet)_第1张图片

多个sheet写入一个excel:

[Java 接口自动化框架]-优化篇02(EasyExcel写入不同sheet)_第2张图片

 

你可能感兴趣的:(#,Java自动化框架,java相关,java,自动化,jar)