BeanShell介绍
BeanShell是一个嵌套在jmeter中的一个免费的、小型的处理器,采用Java编写的。
BeanShell执行标准的Java语法,并使用常见的脚本编写便利进行扩展,可支持自定义导出Jar1包引用等。
使用前的背景
接口间的关联参数数据需要传递参数值。故可通过Beanshell PostProcessor来处理。
下面我们一起来学习如何使用Beanshell PostProcessor获取接口返回的值。
BeanShell PostProcessor的使用
案例:一个登录接口响应数据中的token值,在后续的接口(比如:创建用户)中需要用到。
- 使用jmeter复制登录后的响应数据:
{
"status":200,
"message":"",
"username":"xiaoming",
"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InhpYW9oZWkiLCJpZCI6NjU3OCwiaWF0IjoxNTg3ODkxNTI4LCJleHAiOjE2NzQyOTE1Mjh9.ICi1Rb9X_2s8GGRsAXmVePJ6byjGEKHB_q3qgN35qtg"
}
- 这里是通过org.json解析的。所以需要下载org.json的jar包。【需自行下载】
链接:https://pan.baidu.com/s/1MXjpRrzUITfXHBiIcm0a0w
提取码:sy86
-
jmeter测试计划中导入下载到的jar包
-
在登录请求后,添加后置处理器 -> BeanShell PostProcessor。
-
在Beanshell PostProcessor中的Script中输入以下代码
//先引入Jar包
import org.json.*;
//获取请求返回值。赋予字符串String 变量
String response = prev.getResponseDataAsString();
//将string的值转换成成 Jsonobject 对象
JSONObject data_obj= new JSONObject(response);
//获取Json中 token的值
String token= data_obj.get("token").toString();
//将获取到的token值赋予变量
vars.put("token",token);
//打印token的值
log.info("====token====="+token);
打印的日志在控制台中显示
6. 后续的接口调用(${变量名称})将token对应的值加进去
总结
这个只是简单的Beanshell 提取json数据。后续有需要,会更新复杂json的解析知识。尽情期待!
Jar包是开发者写好的工具类通过Java或开发工具(eclipse、idea等)打包而成,供其它人进行调用。 ↩︎