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