BeanShell是由java编写的,是一个轻量级的脚本语言,也相当于一个小巧免费的JAVA源码解释器,支持对象式的脚本语言特性,亦可嵌入到JAVA源代码中,能动态执行JAVA源代码并为其扩展了脚本语言的一些特性。
JMeter也是由java编写的,而java运行时需要先编译,然后才可以运行,而BeanShell是一款解释器,直接可能运行源代码。
Beanshell内置变量,Beanshell脚本中不用定义,可以直接使用的变量。
打印日志,写入信息到jmeter.log文件,帮助调试脚本;
常用方法:
log.debu(“调试信息”)
log.info(“响应状态码” + ResponseCode)
log.warn(“警告信息”)
log.error(“出错信息”)
操作jmeter变量,生成、更新、获取当前脚本的jmeter变量;(只能在同一线程组内传递);
常用方法:
1) vars.get(String key):从jmeter中获取变量值;如,user是变量,vars.get("user");
常用方法:
2) vars.put(String key,String value):数据存到jmeter变量中;

常用方法:
a) props.get("START.HMS"); 可以获取JMeter中已经生成的属性----注:START.HMS为属性名,在文件jmeter.properties中定义 。
b) props.put("PROP1","1234"); 可以创建和更新JMeter属性。
获取当前线程上下文,可获取当前线程的请求信息和相应信息(可以获取http请求和响应的所有数据);
常用方法:
ctx.getVariables(“变量名”):获取变量值(同vars.get())。
ctx.setVariables(“变量名”, “变量值”):设置变量(同vars.put())。
ctx.getProperties(“属性名”):获取属性值(同props.get())。
ctx.setProperties(“属性名”,“属性值”):设置属性(同props.put())。
ctx.getPreviousResult():获取当前请求结果同(prev)。
ctx.getCurrentSampler():获取当前采样器。
ctx.getPreviousSampler():获取前一采样器。
ctx.getThreadNum():获取线程数。
ctx.getThreadGroup():获取线程组。
ctx. getThread():获取当前线程。
ctx.getEngine():获取引擎。
ctx.isSamplingStarted():判断采样器是否启动。
ctx.isRecording():判断是否开启录制。
ctx.getSamplerContext():获取采样器山下文数据。
获取当前请求的结果,或者说是获取前面的sample返回的信息;
常用方法:
a) getResponseDataAsString():获取响应信息
b) getResponseCode() :获取响应code
可通过编程方式在发起请求以前做预处理,比如编码或者加密。
可通过编程方式获取对应请求的响应结果。