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相同的文件,所以更防错的方法是:
将下一行添加到 user.properties 文件:
sample_variables=id
使用 JSON JMESPath Extractor 从响应中提取 ID,配置如下:
使用Flexible File Writer将值写入文件:
是的,同意 Dmitri 的观点,他更喜欢第二个选项,而吹线应该可以解决您的问题。
new groovy.json.JsonSlurper().parse(prev.getResponseData()).id.each { entry ->
new File('result.csv') << entry << System.getProperty('line.separator')
}
就像德米特里提到的那样。
在我的 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相同的文件,所以更防错的方法是:
将下一行添加到 user.properties 文件:
sample_variables=id
使用 JSON JMESPath Extractor 从响应中提取 ID,配置如下:
使用Flexible File Writer将值写入文件:
是的,同意 Dmitri 的观点,他更喜欢第二个选项,而吹线应该可以解决您的问题。
new groovy.json.JsonSlurper().parse(prev.getResponseData()).id.each { entry ->
new File('result.csv') << entry << System.getProperty('line.separator')
}
就像德米特里提到的那样。