JMeter- 从 JSON 响应中提取 'id' 变量并将其保存在 CSV 文件中并在拆卸线程中使用它

JMeter- extract 'id' variables from JSON response and save it in CSV file and use it in tear down thread

在我的 post 请求中创建一个作业,其响应只有如下 ID,

{"id":626}

我想将 626 的 id 值保存在 csv 或任何文件中,测试完成后我想使用该文件中的所有这些值来检查 tear down 中的作业状态线程组。

如何完成这个? 我有以下脚本但出现错误,

new groovy.json.JsonSlurper().parse(prev.getResponseData()).id.each { entry ->
    new File('result.csv') << entry.get('id') << System.getProperty('line.separator')
}

错误详情,

2021-01-15 12:13:05,699 ERROR o.a.j.e.JSR223PostProcessor: Problem in JSR223 script, JSR223 PostProcessor
javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: java.lang.Integer.get() is applicable for argument types: (String) values: [id]
Possible solutions: getAt(java.lang.String), next(), grep(), grep(java.lang.Object), wait(), abs()

只需将 entry.get('id') 更改为 entry 即可:

new groovy.json.JsonSlurper().parse(prev.getResponseData()).id.each { entry ->
    new File('result.csv') << entry << System.getProperty('line.separator')
}

但是您的方法存在一个潜在的问题,如果您 运行 您的脚本有 > 1 个线程,当多个线程将同时写入时,您可能 运行 进入 race condition相同的文件,所以更防错的方法是:

  1. 将下一行添加到 user.properties 文件:

    sample_variables=id
    
  2. 使用 JSON JMESPath Extractor 从响应中提取 ID,配置如下:

  3. 使用Flexible File Writer将值写入文件:

是的,同意 Dmitri 的观点,他更喜欢第二个选项,而吹线应该可以解决您的问题。

new groovy.json.JsonSlurper().parse(prev.getResponseData()).id.each { entry ->
    new File('result.csv') << entry << System.getProperty('line.separator')
}

就像德米特里提到的那样。