Jmeter之BeanShell PostProcessor使用

BeanShell介绍

BeanShell是一个嵌套在jmeter中的一个免费的、小型的处理器,采用Java编写的。
BeanShell执行标准的Java语法,并使用常见的脚本编写便利进行扩展,可支持自定义导出Jar1包引用等。

使用前的背景

接口间的关联参数数据需要传递参数值。故可通过Beanshell PostProcessor来处理。
下面我们一起来学习如何使用Beanshell PostProcessor获取接口返回的值。

BeanShell PostProcessor的使用

案例:一个登录接口响应数据中的token值,在后续的接口(比如:创建用户)中需要用到。

  1. 使用jmeter复制登录后的响应数据:
{
	"status":200,
    "message":"",
    "username":"xiaoming",
    "token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InhpYW9oZWkiLCJpZCI6NjU3OCwiaWF0IjoxNTg3ODkxNTI4LCJleHAiOjE2NzQyOTE1Mjh9.ICi1Rb9X_2s8GGRsAXmVePJ6byjGEKHB_q3qgN35qtg"
}
  1. 这里是通过org.json解析的。所以需要下载org.json的jar包。【需自行下载】

  2. jmeter测试计划中导入下载到的jar包
    Jmeter之BeanShell PostProcessor使用_第1张图片

  3. 在登录请求后,添加后置处理器 -> BeanShell PostProcessor。
    Jmeter之BeanShell PostProcessor使用_第2张图片

  4. 在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);

打印的日志在控制台中显示
Jmeter之BeanShell PostProcessor使用_第3张图片
6. 后续的接口调用(${变量名称})将token对应的值加进去

总结

这个只是简单的Beanshell 提取json数据。后续有需要,会更新复杂json的解析知识。尽情期待!


  1. Jar包是开发者写好的工具类通过Java或开发工具(eclipse、idea等)打包而成,供其它人进行调用。 ↩︎

你可能感兴趣的:(Jmeter)