Jmeter组件8. BeanShell Sampler
BeanShell是一个小巧免费的JAVA源码解释器,支持对象式的脚本语言特性,亦可嵌入到JAVA源代码中,能动态执行JAVA源代码并为其扩展了脚本语言的一些特性,像JavaScript和perl那样的弱类型、命令式、闭包函数等等特性都不在话下
我想了下,这个组件可以放在请求之间来处理一些计算或者变量赋值等,没用过,不过提供了一个代码接口
通过一个简单的小例子来说明一下,脚本结构如下,首先我定义了几个变量在User defined variables里面,然后通过Debug Sampler打印出来,接着用Beanshell Sampler去改变了几个值,最后再次打印:
BeanShell Sampler里面的脚本如下
Parameters里面放了三个引用的变量,我在User Defined Variables里面定义如下
然后执行之后,第一个Debug Sampler里打印如下,这应该没什么问题:
然后第二个Debug Sampler里面打印结果如下:
首先给var1赋了个新值,造了个var4,赋值为Parameters,看打印结果,存的是一个String类型的值
var2的值,我重新赋值为var3里面的值,新定义个变量start_time,取的是Jmeter里面的属性START.HMS
另外,你要是不清楚Jmeter自带哪些属性,可以在workbench下面加一个Property Display控件
另外,log.info打印的位置在控制台
可以再看下beanshell Sampler的结果,Responsecode 还有ResponseMessage都是可以定制的
最后,附BeanShell重用内置变量,很多我也还没用到过,有实践机会的时候可以再好好研究下
-
log:写入信息到jmeber.log文件,使用方法:log.info(“This is log info!”);
-
ctx:该变量引用了当前线程的上下文,使用方法可参考:org.apache.jmeter.threads.JMeterContext。
-
vars - (JMeterVariables):操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,常用方法:
a) vars.get(String key):从jmeter中获得变量值
b) vars.put(String key,String value):数据存到jmeter变量中
更多方法可参考:org.apache.jmeter.threads.JMeterVariables
-
props - (JMeterProperties - class java.util.Properties):操作jmeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性,它的使用方法与vars类似,但是只能put进去String类型的值,而不能是一个对象。对应于java.util.Properties。
a) props.get("START.HMS"); 注:START.HMS为属性名,在文件jmeter.properties中定义
b) props.put("PROP1","1234");
-
prev - (SampleResult):获取前面的sample返回的信息,常用方法:
a) getResponseDataAsString():获取响应信息
b) getResponseCode() :获取响应code
更多方法可参考:org.apache.jmeter.samplers.SampleResult
-
sampler - (Sampler):gives access to the current sampler