在前文 Beanshell Sampler 与 Beanshell 断言 中,初步阐述了JMeter beanshell的使用,接下来归集整理了JMeter beanshell 中常用的内置对象及其使用。
注:示例使用JMeter版本为5.1
1 vars如 API 文档 所言,这是定义变量的类,而这些变量是单个线程的本地属性。听起来有些难理解,其实我们只要知道,这个类的一系列方法基本是在针对变量进行取值和赋值,而且这个取值和赋值行为只对当前线程的变量生效,而非全部线程。
在所有方法中,有两个方法值得重点关注,其他方法感兴趣的可以阅读文档做进一步了解。这两个方法就是 get() 和 put()。
String get(String key) 方法,xfddb,是取值方法。其要素如下:
参数:String key,即一个字符串格式的key,返回值:参数 key 对应的 value,前提是存在这个键值对,否则会返回null作用:从内存中通过 key 获取对应的 valuevoid put(String key, String value) 方法,则是赋值方法,其要素如下:
参数:String key,即一个字符串格式的键,String value,则是字符串格式的值返回值:void,即没有返回值作用:将一对 key 和 value 以键值对格式存入内存下面通过一个示例,体会一下这两个方法,先建立脚本结构如下:
【用户定义的变量】的作用是:向内存中存入一个变量,参数名为"name",参数值为 “mu”,类似{ “name” : “mu”} 这样一个键值对(仅为示例,JMeter并不是这么存储变量的)
接下来,在【BeanShell取样器】中写入代码:
运行脚本,察看结果树:
更多信息请见:API文档
这个内置对象的类提供了很多方法,但在接口测试中常用的一个方法是 SampleResult getPreviousResult() ,其要素如下:
参数:无返回值:SampleResult,即取样器结果作用:获取前一个取样器的结果SampleResult类 【API文档】又提供了很多方法,以提供取样器结果的诸要素,例如:
String getRequestHeaders() :获取取样器结果的请求头String getResponseCode():获取取样器结果的响应码String getResponseHeaders() :获取取样器结果的响应头String getResponseDataAsString():获取取样器结果的响应数据其他方法请查阅API文档
下面以一个示例进行演示,首先创建下面的脚本:
在【beanShell取样器】中写入以下语句:
运行脚本,在控制台可以看到相应的日志输出:
JMeter还提供了一个内置对象 prev,该内置对象可以直接使用 SampleResult 类中的方法,将上面示例中的【beanShell取样器】的语句修改成下面的:
运行后,发现效果是一样的。