BeanShell相当于在JMeter中植入一段java代码。
在JMeter中有下面这些BeanShell

  1. 定时器BeanShell Timer
  2. 前置处理器 BeanShell PreProcessor
  3. 采样器 BeanShell Sampler
  4. 后置处理器 BeanShell PostProcessor
  5. 断言 BeanShell Assert
  6. 监听器 BeanShell Listener

BeanShell 与 JMeter 之间通过内置变量vars进行交互,而vars和java使用的HashMap相同,常使用vars.put(key,value)添加一组变量的键值对。


案例

前置处理器使用案例

线程组设置为5,随便设就行
Jmeter 中的BeanShell使用_java代码

设置变量的模板

Jmeter 中的BeanShell使用_JMeter_02
Jmeter 中的BeanShell使用_java_03

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;


//格式化
DateTimeFormatter fmDate = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss SSS");

//当天
LocalDateTime today = LocalDateTime.now();
String time=today.format(fmDate);
log.info(time);
vars.put("time",time);// 设置一个变量

在这段代码中有用到日志,日志的输出是JMeter右上方的黄色感叹号
Jmeter 中的BeanShell使用_java_04

如下将上面一串java代码放入script中,这段代码作用就是将当前时间 存入变量中
Jmeter 中的BeanShell使用_采样器_05
如下会发现这段java代码生效了,当前时间在变化着
Jmeter 中的BeanShell使用_java代码_06

同理,BeanShell的其它模块和前置处理器一样,总之
BeanShell的作用就是植入一段java代码,有时候jmeter没有做的那么好,就需要写一点程序。

换个角度思考,程序的 前置、后置、断言、采样、监听、定时等动作都有BeanShell在JMeter中相应的实现,只需要找一下就行了