Beanshell的理解:
1.Beanshell 是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性;2.BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法;
3.BeanShell可以执行标准Java语句和表达式,以及另外自身的一些脚本命令和语法。
Jmeter中包含的Beanshell组件:
1.Beanshell取样器
2.Beanshell定时器
3.Beanshell前置处理器--------主要处理加密
4.Beanshell后置处理器--------主要处理解密、全局变量等
5.Beanshell断言
6.Beanshell监听
Beanshell常用内置对象(变量):
1.log变量:打印信息到jmeter.log
使用方法:log.info("----message---");
2.vars:操作jmeter线程组的局部变量
vars.get(String key),从jmeter中获得变量值
vars.put(String key, String value),数据存到jmeter变量中
3.props:该变量引用jmeter的配置信息,可以获取jmeter的属性,跟vars不同的是,props对象的key只能是字符串类型
props.get(String key) 获取jmeter.properties中的属性值
props.put(String key, String value) 设置jmeter.properties中的属性值
4.prev:获取前面Sampler返回的信息,相当于一个后置处理器,获取当前取样器的响应结果
getResponseDataAsString(),获取响应信息
getResponseCode(),获取响应Code
5.ctx:该变量引用了当前线程的上下文,不经常使用,这边不具体介绍
Beanshell实现不同线程组之间数据传递(跨线程组变量):
1.通过json或者正则提取器提取A接口的返回结果,比如token值,取变量名为get_token
2.添加Beanshell后置处理器,将返回结果设置为全局变量
在Beanshell后置处理器里面添加如下代码:${__setProperty(new_token,${get_token},)}
这里是把全局变量的值赋值给new_token变量
3.使用全局变量 ${__P(new_token,)}
Beanshell引入外部文件(Java,jar,class)
1.导入Java文件
source("Java文件路径");
2.导入jar文件(jar文件放置在jmeter/lib/ext/下面)
import packageName.*;
3.导入class文件
addClassPath("class文件路径");