JMeter-从JSON响应中提取多个变量并将其保存在CSV文件中

时间:2019-02-19 00:08:35

标签: jmeter jsr223 post-processor json-extract

我看过几篇与此相关的文章,但找不到与我的情况相符的文章,因此将其发布为新问题。

我的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; $ .. hits,匹配号为-1

,但它会选择所有URL,但会匹配所有随机值。 而且,我能够为每个控制器使用一个带有一个变量的控制器,以从JSON中提取内容,并成功使用BeanShell后处理器将其写入CSV,但是在这种情况下,该方法不起作用。任何指针都会有所帮助。 我确实检查了JSR223 Post处理器的答案,但是并没有解决这个问题。

预先感谢

1 个答案:

答案 0 :(得分:2)

  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