JMeter笔记⼗四:BeanShell取样器
Beanshell在jmeter中有着⼴泛的应⽤,这⾥简单了解下BeanShell。
BeanShell简单介绍
1、BeanShell特点:
是⼀种完全符合Java语法规范的脚本语⾔,并且⼜拥有⾃⼰的⼀些语法和⽅法;
是⼀种松散类型的脚本语⾔(这点和JS类似);
是⽤Java写成的,⼀个⼩型的、免费的、可以下载的、嵌⼊式的Java源代码解释器,具有对象脚本语⾔特性,⾮常精简的解释器jar⽂件⼤⼩为175k。
执⾏标准Java语句和表达式,另外包括⼀些脚本命令和语法。
2、JMeter常⽤Beanshell:
前置处理器:Beanshell预处理程序
采样器:Beanshell取样器
后置处理器: Beanshell后置处理程序
断⾔:Beanshell断⾔
3、Beanshell内置变量
java配置用户变量内置变量:Beanshell脚本中不⽤定义,可以直接使⽤的变量。
常⽤的内置变量和⽅法如下:
log:写⽇志到控制台和jmeter.log,如log.info("×××");
vars:操作jmeter变量
<("id");从jmeter中获取${id}变量的值
vars.put("name","test");将test保存到${name}变量中
prev:获取前⾯sampler返回的信息
getResponseDataAsString():获取响应信息
getResponseCode():获取响应code
Failure:是否失败,boolean类型
FailureMessage:失败⽇志,在断⾔失败时显⽰
使⽤⽅式
⼀、在Beanshell⾯板直接写脚本
下⾯我们通过⼀个简单的例⼦来了解下
1、通过配置元件“⽤户定义的变量”,添加两个变量,分别是aa=“aa”,bb="bb",如下图:
2、添加Beanshell取样器,并写⼀个简单的⼩功能,实现将“hello,”+aa的值赋值给变量bb:
public static void test(){
String input;
("aa");
String output = "hello,"+input;
vars.put("bb",output);
}
test();
3、在Beanshell之前和之后分别添加取样器,添加-查看结果树,运⾏查看执⾏结果
⼆、引⽤外部java源⽂件
还是⽤上⾯的例⼦,简单了解下⽤java⽂件如何实现Beanshell
1、⽤ecplise编写java⽂件如下:
public class BeanshellMethod {
public static String test(String input) {
String output ="Hello,"+input;
return output;
}
}
2、编写Beanshell取样器脚本如下:
source("D:/software/apache-jmeter-5.1.1/bin/test_beanshell/BeanshellMethod.java");  //java⽂件地址
String ("aa");
String output = new BeanshellMethod().test(input);
vars.put("bb",output);
3、运⾏结果如下:
三、应⽤class⽂件
1、再上⼀个例⼦的基础上,进⼊java⽂件所在⽬录,执⾏javac xxx.java,⽣成xxx.class⽂件如下图:
2、编写Beanshell取样器脚本如下:
addClassPath("D:/software/apache-jmeter-5.1.1/bin/test_beanshell");  //指定class⽂件路径
import BeanshellMethod;  //导⼊BeanshellMethod⽅法
String ("aa");
String output = new BeanshellMethod().test(input);
vars.put("bb",output);
3、运⾏结果如下:
四、调⽤jar包
1、继续使⽤第⼀个例⼦,进⼊ecplise,将java⽂件导出jar包,并将导出的jar包放置到D:\software\apache-jmeter-5.1.1\lib\ext路径下。这⾥需要注意下的是,需要重启下jmeter。
2、编写beanshell脚本如下:
import BeanshellMethod;    //
String ("aa");
String output = new BeanshellMethod().test(input);
vars.put("bb",output);
3、运⾏结果如下:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。