1. 图片上传
1.1 设置接口参数:填写方法与普通接口一致
1.2 上传文件
文件名称:本地文件保存路径,相对路径在安装路径apache-jmeter-5.3\bin下
多文件上传,可进行参数化设置,并添加循环控制器完成多次调用
注意:测试文件上传接口时,消息头Content-Type应禁用掉
2. 获取已上传文件列表
目的:获取文件下载地址,为后续下载文件做准备
分别通过正则表达式提取器、json提取器获取文件下载ip、路径、文件名、文件数量(作为下载循环次数)
注意:每个文件的下载ip一致,只取一个值即可,匹配数量为1
每个文件的下载路径和文件名都不同,每个值都要取到,匹配数量应为-1(-1即全部),这些值会存放在数组中,可用循环控制器取值
3. 下载并保存文件
3.1 添加ForEach控制器
变量为每个文件的下载地址(因ip相同,故只取路径作为循环变量),循环次数为文件数量
3.2 添加下载接口
因文件下载的ip一样,所以只保存了一个值,变量名用正则表达式提取出来的变量名即可
文件下载路径不同, 每个路径都进行了保存,通过ForEach控制器来取值,每循环一次,数组下标加1,因此这里的变量名应用循环控制器输出的变量名
3.3 添加beanshell断言,保存文件到本地
import java.io.*;
//获取接口响应数据
byte[] result = prev.getResponseData();
//获取正则表达式提取的文件名 当做本地保存的名称
String _file = vars.get("url");
//设置文件路径
String file_name = "D:\\Jmeter练习\\下载图片\\"+ _file;
File file = new File(file_name);
FileOutputStream out = new FileOutputStream(file);
out.write(result);
out.close();
4. 其他
4.1 增加beanshell断言:每次进行文件下载前先确定本地是否有要保存下载文件的目录,没有则新建,有则先删除再新建
位置:放在了下载接口前,获取已上传文件接口中
删除文件夹方法:在网上能找到,直接调用即可,调用时需判断文件夹是否存在
4.2 调用上传文件接口前,先将已有文件删除,避免下载过多
通过获取已上传列表接口获取到文件id和数量,通过ForEach控制器按id进行删除