【问题标题】:JMeter- extract multiple variables from JSON response and save it in CSV fileJMeter- 从 JSON 响应中提取多个变量并将其保存在 CSV 文件中
【发布时间】:2019-02-19 00:08:34
【问题描述】:

我看过几篇与此相关的帖子,但我找不到与我的场景非常匹配的帖子,因此将其作为一个新问题发布。

我有以下 JSON 响应

{
  "myshop": [
    { 
      "url": "test1",
      "hits": 1000
    },
    { 
      "url": "test2",
      "hits": 2000
    },
    { 
      "url": "test3",
      "hits": 3000
    }
  ]
}

我想提取每个 URL,其对应的命中,并将其存储在 CSV 文件中,在这种情况下,它将是 CSV 文件中的 3 行

test1,1000
test2,2000
test3,3000

但无法成功执行此操作。我的 JSON 提取器:

$..url;$..匹配数为 -1 的命中

但它会选择所有 URL,但会选择任何随机命中值。 此外,我能够为每个控制器使用一个变量来从 JSON 中提取,使用 BeanShell 后处理器成功地将其写入 CSV,但同样不适用于这种情况。任何指针都会有所帮助。 我确实检查了 JSR223 后处理器的答案很少,但这并没有涵盖这个问题场景。

提前致谢

【问题讨论】:

    标签: jmeter jsr223 post-processor json-extract


    【解决方案1】:
    1. JSR223 PostProcessor 添加为返回上述 JSON 的请求的子项
    2. 将以下代码放入“脚本”区域:

      new groovy.json.JsonSlurper().parse(prev.getResponseData()).myshop.each { entry ->
          new File('entries.csv') << entry.get('url') << ',' << entry.get('hits') << System.getProperty('line.separator')
      }
      
    3. 就是这样,一旦你运行你的测试entries.csv文件将在JMeter的“bin”文件夹中生成,其中包含所需格式的信息。

    参考资料:


    还要注意,如果代码一次最多以 1 个线程执行(即确保使用 Critical Section Controller),该方法将可靠地工作。否则考虑切换到Sample VariablesFlexible File Writer

    【讨论】:

    • 非常感谢,德米特里,工作就像一个魅力。有没有办法包含一个从上一个 HTTP Get 请求中提取的变量以附加到 myshop.each 条目?基本上,第一个 Http Get 请求用一个标识符响应,这里提到的第二个 HTTP GET 请求基于这个标识符产生响应,实际上它在 HTTP GET 方法中包含这个标识符
    • 您可以使用 vars 简写访问 JMeter Variabels,它代表 JMeterVariables 类实例,如 new File('entries.csv') &lt;&lt; entry.get('url') &lt;&lt; ',' &lt;&lt; entry.get('hits') &lt;&lt; ',' &lt;&lt; vars.get('your_variable_from_previous_request') &lt;&lt; System.getProperty('line.separator') 。更多信息:Top 8 JMeter Java Classes You Should Be Using with Groovy
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2011-06-22
    相关资源
    最近更新 更多