20211219--读取文件参数进行业务查询并把指定数据写入到文件

文档概要:

1、读取文件

2、进行业务查询

3、将指定的查询数据写入到文件中

说明

1、17号晚上加班验证项目上数据重复的问题,数据量小进行截图对比,当然也是很耗时间的,在验证前,需要把数据截图做记录,以便和执行脚本后的数据做对比。

2、这个只是小批量范围灰度验证,20号会有3千多条数据同时执行,虽然方案是抽验,但是想着如果能通过接口的形式,先将执行脚本前的数据进行批量保存到一个文件中,然后将执行脚本后的数据批量保存到另外一个文件中,然后合并后进行数据对比;这样可以保证大批量数据的验证。

3、之前的接口测试源数据是单个,这次需要批量的,所以需要将请求参数保存在文件里,通过程序读取后,传给业务接口去做查询;然后将查询的数据提取后重新写入到文件中。

4、操作文件前,请先在pom.xml文件中添加如下依赖:


一、读取文件

1、刚开始使用的是easyExcel来写的,虽然能读取数据,但是打印出来的是对象,按照目前的水平没有办法将参数传给查询接口。

2、后面在B找资料,采用POI来写,实现过程如下:

2.1、先将数据写入到一个excel文件里,这是读取文件之前的准备工作。

2.2、创建文件读取的方法,这里是使用文件流的方式,将文件路径粘贴进入的时候会自动加斜杠。

2.3、我们需要读取的是第一个sheet,第一个行的数据,所以索引都是从0开始。

2.4、假如需要读取多行数据,在for循环中根据实际表格字段来添加就好,这里只读取的是id信息。

2.5、其中int n = sheetRead.getPhysicalNumberOfRows(); 获取的是文件的行数,在for循环的时候只要小于该数

数字就行。

2.6、程序中记得关闭动作,查询结束后进行关闭流的一个操作。

3、进行业务查询前还需要创建一个实体类,用于存放变量对象,相当于桥梁的作用,在此次的场景中可以理解为:业务查询提取的数据通过该桥梁可以写入到文件中。

3.1、四个注解分别为:

@Data:代替geter和seter
@Builder:代替@Override
@NoArgsConstructor:无参构造
@AllArgsConstructor:全参构造

前提要先导入lombok,这样看起来界面就整洁很多。

4、处理逻辑

4.1、在readAndWriteExcel()方法中的for循环里加上:ExcelDTO excelDTO = query.getByApi(id);其中id就是 获取文件里的id,来传给getByApi()方法。

4.2、在public static ExcelDTO getByApi(String abc) throws Exception{}传入形参进行引用就可以啦。

二、进行业务查询

1、定义public static ExcelDTO getByApi(String abc) throws Exception{},来接收传过来的参数,同时ExcelDTO还会接收返回的指定参数。

2、其中if判断,接口执行成功进入if(){}中进行后续的操作,涉及提取数据、提取的数据添加到对象里;不成功直接return null;

三、将指定的查询数据写入到文件中

1、查询接口提取指定的数据后,通过对ExcelDTO对象接收给写入文件的程序进行使用,达到数据写入文件的场景。

2、基本步骤是创建一个文件、创建一个工作簿、创建一个sheet,

2.1、创建文件使用获取系统毫秒数,并使用concat()来拼接的,这样每次执行后产生不同的文件,避免使用同一文件被覆盖的情况,【因为有时候会拿当前文件和之前的文件做比较】

2.2、for(....){

Row rowWrite= sheetWrite.createRow(i); //根据次数写入到第几列
rowWrite.createCell(0).setCellValue(excelDTO.getId()); //在第一行写数据
rowWrite.createCell(1).setCellValue(excelDTO.getReceiptProductList());}//在第二行写数据

3、最后别忘记写入和关闭操作

wbWrite.write(fop);
fop.close();

4、写入文件数据效果如下图

  

最后

1、本文场景涉及到读取文件然后将读取的参数传给查询业务接口、查询业务接口返回的数据进行提取后写入到文件。

2、解决问题的思路很总要,目前我还停留在入门阶段,后面的写入文件实现是我老弟帮忙指导实现的。特此感谢!!

posted @ 2021-12-26 16:54  感恩有你  阅读(131)  评论(0编辑  收藏  举报