BeanShell PostProcessor 后置处理器

一 主要作用:

BeanShell PostProcessor 主要用来提取响应数据,对数据做处理分析的。

二 概念:

作用类似于后置处理器,其中的ctx、vars、props、prev、log都和BeanShell Sampler一样一样

![image.png](https://fynotefile.oss-cn-zhangjiakou.aliyuncs.com/fynote/fyfile/16194/1663307082040/f1a46708c4ae40229e892abaf6985a72.png)

重点解释前面没有的:

**data: 允许beanshell脚本通过data访问当前取样器的数据,映射SamplerResult中的getResponseData,相当于prev.getResponseData**

通过阅读源码可以知道,这个data是使用StringCoding.encoding("UTF-8")生成的,并转化成了字节码,所以使用它需要解码才能使用;

例如可以如下去使用:

```
String s = new String(data);
log.info(s);
```

三 基础案例:

需求:

```

  1. 使用log打印当前取样器的响应体数据data
    String s = new String(data);
    log.info(s);
  2. 使用Java代码提取响应体的数据,并保存到JMeter变量
    //提取code值200,并保存在jmeter变量code中
    //使用正则
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    String pattern = "\"code\"\":\"(.+?)\"";
    Pattern p = Pattern.complile(pattern);//创建正则对象
    Matcher m = p.matcher(s); // 使用执勤的正则对象p匹配数据s
    if (m.find(){
      String code= m.group(1);
      log.info(code);
      vars.put("code",code);
    }
    ```