BeanShell脚本主要通过vars和props去访问变量,常用方法:
- vars.get(变量名):获取定义变量对应的值,含BeanShell脚本生成变量
- vars.put(变量名,变量值):生成新的变量或修改已存在的变量
- props.get(变量名):获取jmeter.properties中定义变量对应值
- props.put(变量名,变量值):生成新的变量或修改已存在的变量
需要注意的是,vars只能操作本线程组的,props可以操作其他线程组的值,props只能put进去String类型的值,而不能是一个对象。get是获取变量的值,put是将值保存到变量中。
1、vars.get可以从元件中取值,也可以从当前文件中获得值。添加>取样器>BeanShell 取样器
定义变量a=111,b=222
获取a,b的值并赋值给aa和bb,再把aa和bb的值保存到c,d变量中;并从当前文件获得c的值
String aa=vars.get("a");
String bb=vars.get("b");
log.info(aa);
vars.put("c",aa);
vars.put("d",bb);
String o=vars.get("c");
log.info(o);
2、jmeter中查看日志使用log.info();如果是System.out.println();则需要在命令行窗口才能查看
3、vars.get无法访问其他线程组的值,会返回null(vars.put无法修改其他线程组的值)。添加>取样器>BeanShell 取样器
4、props.get可以访问其他线程组中的值(props.put可以修改其他线程组的值)。添加>取样器>BeanShell 取样器
5、prev:获取sample返回的信息,添加>取样器>BeanShell 后置处理器
getSamplerData() :获取请求内容
getResponseDataAsString(): 获取响应信息
getResponseCode(): 获取响应代码
6、ctx:解析请求的结果,添加>取样器>BeanShell 后置处理器
ctx.getPreviousResult()等同于prev;ctx的返回结果是SimpleResult,需要引用jar包
import org.apache.jmeter.samplers.SampleResult;
SampleResult result=ctx.getPreviousResult();
log.info(result.getRequestHeaders());
log.info(result.getResponseDataAsString());
log.info(result.getSamplerData());
log.info(result.getResponseCode());