美文网首页
Jmeter「第三节」-图片转base64

Jmeter「第三节」-图片转base64

作者: 测试界 | 来源:发表于2019-11-07 00:08 被阅读0次

    在接口或性能测试中,会碰到接口的某些参数值是base64的,那就是调接口之前,得先把图片转换成base64。

    如果只是简单的场景,可以事先把转换好的base64,通过用户自定义变量写死一个。

    但是复杂场景的时候,比如说很多不同大小的图片,大批量图片等,为了尽量模拟实际场景,要求每次取不同的图片,进行稳定性或性能测试。这个时候把所有图片提前转换,然后在存储,就不太方便了。

    下面就来说下用前置处理器beanshell自动转换图片

    用户定义的变量

    E:\jmeterjpg\

    路径后面的“\”不能省噢(如果省了,那需要在后续的beanshell里面加上,不然会找不到路径的)

    BeanShell 预处理程序-jdk8

    本次作为功能演示,String b= "25k";这个目前写死了,可以根据实际需要传变量的

    这里提供下思路哈:

    1.jmeterjpg文件夹里面的图片重命名 从1开始,递增;

    如果图片超过100w,windows系统重命名会很慢的,建议在linux上直接改,改好后,在传到windows本地;

    2.通过随机获取或jmeter里面的计数器,作为一个变量,传给“b”

    import java.io.*;

    import sun.misc.*;

    String a= vars.get("path");

    String b= "25k";

    String a =a+b+".jpg";

    String base64string=null;

    InputStream inputStream = null;

    byte[] data = null;

    try {

    inputStream = new FileInputStream(a);

    data = new byte[inputStream.available()];

    inputStream.read(data);

    BASE64Encoder encoder = new BASE64Encoder();

    base64string = encoder.encode(data);

    base64string = base64string.replaceAll("\n", "").replaceAll("\r", "");

    } catch (IOException e) {

    throw new RuntimeException(e);

    } finally {

    if (null != inputStream) {

    try {

    inputStream.close();

    } catch (IOException e) {

    throw new RuntimeException(e);

    }

    }

    }

    String str=base64string.toString();

    vars.put("base64str",str);

    图片转base64

    因为办公电脑的JDK环境是8,而家里的JDK环境是最新的13,发现BASE64Encoder方法在8上面是没有问题的,但是JDK13就会提示找不到。然后就在家里调试了下,发现jmeter是支持 org.apache.commons.codec.binary.Base64;这个的,于是就把执行的代码调整了下。这样的话就减少了对JDK的依赖,兼容性好了很多;JDK8和JDK13 是没有问题的

    import java.io.*;

    import org.apache.commons.codec.binary.Base64;

    String a= vars.get("path");

    String b= "25k";

    String a =a+b+".jpg";

    byte[] data = null;

    try {

    InputStream in = new FileInputStream(a);

    data = new byte[in.available()];

    in.read(data);

    in.close();

    } catch (IOException e) {

    e.printStackTrace();

    }

    Base64 base64 = new Base64();

    vars.put("base64",base64.encodeToString(data));

    调试取样器

    加入一个调试取样器,等会看下运行结果

    运行一下,看下结果:

    jdk8:

    兼容jdk8和jdk13的结果:

    相关文章

      网友评论

          本文标题:Jmeter「第三节」-图片转base64

          本文链接:https://www.haomeiwen.com/subject/jbxmbctx.html