MeterSphere 接口测试中利用 MinIO 实现文件上传和读取


飞致云 发布于 2024-10-10 / 21 阅读 / 0 评论 /
1、文件上传到 MinIO 查看管理 使用案例:测试下载文件接口,可以使用 BeanShell 后置脚本的方式将接口返回的内容生成文件流上传到 MinIO 里,然后从 MinIO 里下载对应的文件查看。 ①.在接口测试执行下载附件的接口,可以看到响应体是文件的内容

1、文件上传到 MinIO 查看管理

使用案例:测试下载文件接口,可以使用 BeanShell 后置脚本的方式将接口返回的内容生成文件流上传到 MinIO 里,然后从 MinIO 里下载对应的文件查看。

①.在接口测试执行下载附件的接口,可以看到响应体是文件的内容

②在后置操作选择后置脚本 BeanShell,加入上传文件到 MinIO 的代码

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());

③再次执行成功后,登录到 MinIO 中查看和下载对应的文件( MinIO 的地址、用户名、密码等信息可在部署 MeterSphere 的服务器 /opt/metersphere/.env 里查看)

2、读取 MinIO 文件内容

①在需要读取的脚本里加入 BeanShell 脚本 读取 MinIO文件内容

import io.minio.MinioClient;
import io.minio.GetObjectArgs;
import java.io.*;
import java.nio.charset.StandardCharsets;
import io.minio.PutObjectArgs;
 
//MinIO 的账号信息,可以在 MeterSphere 的服务器的 /opt/metersphere/.env 里查看
String accessKey = "admin";
String secretKey = "Password123@minio";
String url = "http://<MeterSphere_IP>:9000";
String bucket = "metersphere";
String file_name = "opt/测试计划.jmx";
MinioClient minioClient = MinioClient.builder()
        .endpoint(url)
        .credentials(accessKey, secretKey)
        .build();
 
try {
    InputStream inputStream = minioClient.getObject(GetObjectArgs.builder().bucket(bucket).object(file_name).build());
    BufferedReader bdr = new BufferedReader(new InputStreamReader(inputStream));
    String line ="";
    int i=1;
    while ((line =bdr.readLine())!= null){
        log.info("i--11--"+i+"----"+line);
        i++;
    }
} catch (Exception e) {
    e.printStackTrace();
}

②执行脚本,控制台打印出脚本内容



是否对你有帮助?