BeanShell是由java编写的,是一个轻量级的脚本语言,也相当于一个小巧免费的JAVA源码解释器,支持对象式的脚本语言特性,亦可嵌入到JAVA源代码中,能动态执行JAVA源代码并为其扩展了脚本语言的一些特性。
JMeter也是由java编写的,而java运行时需要先编译,然后才可以运行,而BeanShell是一款解释器,直接可能运行源代码。
Beanshell内置变量,Beanshell脚本中不用定义,可以直接使用的变量。
Beanshell常用的内置变量:
(1)log:打印日志,写入信息到jmeter.log文件,帮助调试脚本;
常用方法:
log.debu(“调试信息”)
log.info(“响应状态码” + ResponseCode) //log.info("打印usernamme变量值: "+ vars.get("usernamme")); //打印变量usernamme值
log.warn(“警告信息”)
log.error(“出错信息”)
(2)vars:操作jmeter变量,生成、更新、获取当前脚本的jmeter变量;(只能在同一线程组内传递);
常用方法:
a) vars.get(String key):从jmeter中获取变量值;如,user是变量,vars.get("user");
b) vars.put(String key,String value):数据存到jmeter变量中;
(3)props:操作jmeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性,它的使用方法与vars类似,但是只能put进去String类型的值,而不能是一个对象。对应于java.util.Properties。 (可在整个测试计划中跨线程组传递)
常用方法:
a) props.get("START.HMS"); 可以获取JMeter中已经生成的属性----注:START.HMS为属性名,在文件jmeter.properties中定义 。
b) props.put("PROP1","1234"); 可以创建和更新JMeter属性。
(4)ctx:获取当前线程上下文,可获取当前线程的请求信息和相应信息(可以获取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():获取采样器山下文数据。
(5)prev:获取当前请求的结果,或者说是获取前面的sample返回的信息;
常用方法:
a) getResponseDataAsString():获取响应信息
b) getResponseCode() :获取响应code