BeanShell取样器可以理解为一个小型的Java解释器
当我们要执行一些复杂的操作的时候例如给密码通过特殊的算法来加密解密,可能通过Jmeter自带的插件很难完成,这时候我们就可以通过BeanShell自己编写脚本来处理
导入Java脚本过程:
第一步导包:将你的Java代码打包成jar包通过下图,把jar包添加进Jmeterlib
第二部,创建一个BeanShell取样器,在其中输入import 包名.类名,就可以导入你自己写的Java代码啦,调用的方法和正常的Java使用基本一致
下面说说BeanShell常用的几个内置对象:
①log:写入信息到jmeber.log文件,使用方法:log.info(“你要输出在日志的信息”),注意点是log.info只输出String类型的变量
具体案例如下面演示:
②vars :操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,常用方法:
a) vars.get(String key):从jmeter中获得数据
b) vars.put(String key,String value):将Java种数据存到jmeter变量中
一个小小的注意点vars.put产生的新变量无法通过BeanShell和日志查看
案例如下:获取登入种的session的值,同时给id赋值让Jmeter读取到:
运行结果如下,可以看到成功读取到了session同时给new这个变量赋了值:
还有一个比较常用的就是prev
prev - (SampleResult):获取前面的sample返回的信息,常用方法:
a) getResponseDataAsString():获取响应信息
b) getResponseCode() :获取响应code
其他的方法可以参考官网的api,这里就不放截图了