【问题标题】:jmeter json path bean post processorjmeter json路径bean后处理器
【发布时间】:2015-07-24 18:32:03
【问题描述】:

我有以下使用JSONPath提取器从响应中提取的条目

entries = ["e-1553","e-1552","c-1052","e-1551","c-1050",
           "e-1550","c-1049","e-1549","c-1051","e-1548",
           "c-1048","e-1547","c-1047","e-1546","c-1045",
           "e-1545","e-1544","c-1046","e-1543","e-1542",
           "c-1026","e-1541","e-1540","e-1539","e-1538",
           "c-1025","e-1537","e-1536","c-1024","f-1535",
           "f-1534"]

我只想迭代那些以“e-”开头的条目,例如"e-1553,e-1552" 等在我的 ForEach 控制器中,并排除其他条目,例如 "c-1052, c-1050" 等。

这样我就可以使用http://somesite.com/e-1553 等。

我该怎么做?

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    假设您有保存 JSONArray 的“条目”变量,您可以获取所有以“e-”开头的条目,如下所示:

    1. 在 JSONPath 提取器之后添加一个Beanshell PostProcessor
    2. 将以下代码放入 PostProcessor 的“脚本”区域:

      JSONArray array = JSONArray.fromObject(vars.get("entries"));
      int counter = 0;
      for (int i=0;i < array.size();i++) {
          String s = array.get(i).toString();
          if (s.startsWith("e-"))
          {
              counter++;
              vars.put("entry_" + counter, s);
          }
      }
      

    它会产生如下变量:

    entry_1=e-1553
    entry_10=e-1544
    entry_11=e-1543
    entry_12=e-1542
    entry_13=e-1541
    etc.
    

    然后添加ForEach Controller,配置如下:

    • 输入变量前缀:entry
    • 循环开始索引:0
    • 输出变量名:current_entry

    然后在 HTTP 请求的路径中使用 ${current_entry}

    有关 JMeter 中的 Beanshell 脚本的更多信息,请参阅 How to use BeanShell: JMeter's favorite built-in component 指南。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多