POST API触发良好,仅从数组中获取第一个json对象,其余json对象未传递。我需要使用JMeter和Groovy按顺序触发具有多个json有效负载的API。
json有效负载:下面是json负载示例。
[
{
"person": "abc",
"Id": "123"},
{
"person": "adfg",
"Id": "12883"},
{
"person": "adf",
"Id": "125"}
]
Groovy代码:从包含多个json对象的json文件中阅读数据,并将其发送到jmeter中的post请求。
请尝试{
JsonSlurper jsonSlurper=new JsonSlurper();
def jsonPayload = jsonSlurper.parse(new File('PAYLOAD.json'))
String inputData = new groovy.json.JsonBuilder(jsonPayload)
JsonElement root = new JsonParser().parse(inputData);
JsonArray jsonArray = root.getAsJsonArray();
log.info("jsonArray:"+jsonArray);
if(jsonArray != null && !jsonArray.isEmpty())
{
jsonArray.each{paylodData ->
println paylodData
log.info("post data:"+paylodData);
vars.putObject("payloads", paylodData.toString())
log.info('Generated body: ' + vars.getObject('payloads'))
}
}
}catch (FileNotFoundException fe) {
log.info("Error: Please Check the file path");
}
JMeter Test : Triggering same API with multiple payloads
using below variable in post request body
${payloads}
NOTE : API is triggering fine and taking only first json object and rest of the json objects are not passing. I need to trigger API with multiple json payloads sequentially.
1条答案
按热度按时间628mspwn1#
你想达到什么目的?
您有一个foreach loop,它迭代JSON数组,并将内部对象值写入
payloads
JMeter Variable重点是foreach循环的每次迭代都会覆盖变量中的前一个值,因此您将始终获得最后一个值。
您需要将
jsonArray.each
替换为jsonArray.eachWithIndex
,并将每个数组成员存储到一个单独的变量中,如下所示:或者将响应转换为另一种格式,但在这里我无法给出任何建议,因为我不知道期望的是什么。
更多信息: