JMeter元件系列(一)---jmeter常用后置处理器详解

常用的后置处理器:

  • 正则表达式提取器
  • Debug PostProcessor
  • BeanShell PostProcessor

1、正则表达式提取器

  • 作用:将上一个请求中的一部分发送到下一个请求中,看运行是否成功,也就是jmeter的关联。
  • 界面如下:
    在这里插入图片描述
  • 引用名称:下一个请求要引用的参数名称,如填写title,则可用${title}引用它。
  • 正则表达式:要提取的正则表达式,()中的是要提取的部分。
    注意:如果匹配的内容类似于<a class ='ksks' onclick="start('55645645SDFSDFSDF','5421313SFDGFHGJG')">AAA</a> ,外层括号会影响匹配的正则表达式导致匹配不到。
  • 模板:用美元符号引用起来。$1 $代表匹配第一个值,$2 $代表匹配第二个值
  • 匹配数字:0代表随机取值,1代表全部取值,通常情况下填0。
  • 缺省值:如果参数没有取得到值,那默认给一个值让它取,一般写null。

示例:提取百度页面的title<百度一下,你就知道>
在这里插入图片描述
提取成功
将提取的title应用到另一个请求,由于我本地没有项目,http请求2就是举例,并无实际意义。
在这里插入图片描述

2、Debug PostProcessor

  • 作用:这个我理解的和Debug Sampler差不多,都是调试用的。
  • 界面如下:
    在这里插入图片描述
  • 用法:正则里提取的还是百度的title
    在这里插入图片描述

3、BeanShell PostProcessor

  • 用法和BeanShell Sampler类似。都是写脚本执行。
  • 界面如下:
    在这里插入图片描述
  • 使用BeanShell PostProcessor组件获取Response中的内容
    代码如下:
  1. 场景一:获取请求响应中的数据,并保存
    import com.alibaba.fastjson.*; // 引入包。这个包需要先放在jmeter的lib文件夹下的ext中。

    // 获取数据
    String response = prev.getResponseDataAsString(); // 获取Response
    JSONObject responseObj = JSON.parseObject(response); // 整个Response作为JSON对象
    JSONObject resObj = responseObj.getJSONObject(“res”); // 获取某一部分对象。即,json串中{}的内容
    JSONArray listArray = resObj.getJSONArray(“list”); // 获取列表。即,json串中[]的内容

    // 保存数据
    【列表】
    int len = listArray.size();
    for(int i=0; i<len; i++){
    temp[i] = listArray.get(i).getString(“name”);
    }
    vars.put(“names”, Arrays.toString(temp)); // 保存到JMeter变量中,vars.put只能保存字符串,因此这里使用了toString()进行转换

    【String类型】
    String id = resObj.get(“id”); // 获取对象中某一字符串的内容。
    vars.put(“id”, id); // 保存到JMeter变量中,后面的组件可以使用

    【Integer类型】
    Integer no = resObj.get(“id”); // 获取对象中某一整型的内容。
    vars.put(“no”, no.toString()); // 保存到JMeter变量中,vars.put只能保存字符串,因此这里使用了toString()进行转换

  2. 场景二:获取数据库中查询到的数据,并保存
    select total_cash from t_cash where user_name=“tom”;
    在Result variable name中的值为:result
    String cash_new = vars.getObject(“result”).get(0).get(“total_cash”).toString();
    vars.put(“cash_new”, cash_new);

示例:
test数据库中有两个表,tab_city表存放cityname和cityid;wea表存放food、cityname和cityid。

在jmeter中创建脚本,我想通过BeanShell PostProcessor把jdbc1返回的cityname用于jdbc2中来查food。需要了解JDBC请求的点击这里哦!
在这里插入图片描述
JDBC1:
在这里插入图片描述
在这里插入图片描述
JDBC2:
在这里插入图片描述
执行结果:
在这里插入图片描述
参考博客:https://blog.csdn.net/aduocd/article/details/80351719

猜你喜欢

转载自blog.csdn.net/qq_36800800/article/details/83274823
今日推荐