1、背景
在我们实际应用中,需要测试下载文件接口,MeterSphere 2.10-LTS 内置 MinIO 对象存储服务,可以使用 BeanShell 后置脚本的方式将接口返回的内容生成文件流上传到 MinIO 里,然后从 MinIO 里下载对应的文件查看。
2、使用案例
1.在接口测试写一个下载附件的接口并创建一个接口 CASE 或者场景。
2.执行该接口,可以看到响应体是文件的内容。
3.在后置操作选择后置脚本 BeanShell,并写以下脚本
import io.minio.MinioClient;
import io.minio.PutObjectArgs;
import io.minio.errors.*;
import java.io.*;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
// 获取响应信息
byte[] result = prev.getResponseData();
//MinIO 的账号信息,可以在 MeterSphere 的服务器的 /opt/metersphere/.env 里查看
String accessKey ="admin";
String secretKey ="Password123@minio";
String url="http://<MeterSphere_IP>:9000";
String bucket="metersphere";
//下载的附件名称
String file_name="test/ms登录_1692248173748.jmx";
InputStream input = new ByteArrayInputStream(result);
MinioClient client = MinioClient.builder()
.endpoint(url)
.credentials(accessKey, secretKey)
.build();
PutObjectArgs.Builder putObjectArgsBuilder = PutObjectArgs.builder()
.bucket(bucket)
.object(file_name)
.stream(input, input.available(), 5 * 1024 * 1024);
client.putObject(putObjectArgsBuilder.build());
4.接口执行成功后,登录到 MinIO 中查看和下载对应的文件( MinIO 的地址、用户名、密码等信息可在部署 MeterSphere 的服务器 /opt/metersphere/.env 里查看)。