那些年jmeter工具遇到的坑-变量名称时不要时间data名称,数据驱动循环调用数据时第一条可以过,后续的会报错
在jmeter 实现数据驱动情况时,遇到的变量问题:
源代码:
String resData = prev.getResponseDataAsString();
JSONObject dataObj = JSONObject.parseObject(resData);
String data = dataObj.getString("data");
JSONArray lists = JSONArray.parseArray(data);
*在处理响应请求中的数据,当两个BeanShell后置处理器中的变量都命名为data时(只有data时会报错,其他命名一致没有问题),线程循环到第二遍及以上时进行数据处理会出现问题 错误如下:
2021-04-26 15:41:33,630 ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: set Variable assignment: data: Can't assign byte [] to java.lang.String
2021-04-26 15:41:33,630 WARN o.a.j.e.BeanShellPostProcessor: Problem in BeanShell script: org.apache.jorphan.util.JMeterException: Error invoking bsh method: set Variable assignment: data: Can't assign byte [] to java.lang.String
总结目的
在做数据驱动设置多次循环时,如果流程中有两个及以上BeanShell后置处理器中变量都命名为data,在第二次循环及以上时Jmeter会用到你第一次BeanShell处理后获得的数据而不是本次循环处理的数据,可能是Jmeter在做第二次循环时内部会用到data作为内部变量使用,所以我们在处理数据,给变量命名时注意尽量不要使用data作为变量名或者涉及到一个流程有两个及以上BeanShell后置处理器时只有一个BeanShell中变量用data命名,其他BeanShell不要再用data命名,可以避开这种情况的发生。