最近一个项目上,用MeterSphere做接口自动化测试,碰到一个场景: 1. 调用dumpProject接口(Post)在服务端生成文件,接口返回如下内容,fileName通过MeterSphere的接口请求里的 后置操作,Json Path提取 {"type":"project","statusCode":"000000","fileName":"dump_wangjin_1673596188.txt"}
2. 调用"/server/dump/文件名"(get)接口实现文件下载 3.把第2步服务get请求里的响应内容,也就是文件,下载到本地,需要在接口自动化场景里添加一个自定义脚本,或者在后置操作里添加一个后置脚本。脚本实现如下:
import java.io.*; //获取上个请求的返回数据 byte[] result = prev.getResponseData(); //之前步骤提取的文件名 log.info(vars.get("fileName")); //之前提取的项目id log.info(vars.get("projectID")); //生成文件名 String file_name = "/opt/metersphere/data/files/"+vars.get("projectID")+"/"++vars.get("projectID")+".text"; //新建File对象 file File file = new File(file_name); //新建文件输出流 FileOutputStream out = new FileOutputStream(file); //输出前一个请求内容到文件 out.write(result); out.close();
4. 文件下载到MeterSphere所在服务器的/opt/meterSphere/data/files/......后,可对文件进行处理,处理方式包括自己写个java程序,打成jar包后上传到MeterSphere项目设置下的文件管理,然后在自定义脚本里调用,并对文件进行处理。
5. 文件处理完成后,即可在后续请求里上传,关于如何动态上传文件,下个帖子里细讲 。
|