如何在jmeter中使用groovy脚本将数组的多个json对象传递给post请求

zlwx9yxi  于 2022-11-01  发布在  其他
关注(0)|答案(1)|浏览(398)

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.
628mspwn

628mspwn1#

你想达到什么目的?
您有一个foreach loop,它迭代JSON数组,并将内部对象值写入payloadsJMeter Variable
重点是foreach循环的每次迭代都会覆盖变量中的前一个值,因此您将始终获得最后一个值。
您需要将jsonArray.each替换为jsonArray.eachWithIndex,并将每个数组成员存储到一个单独的变量中,如下所示:

payload_0 = first array member
payload_1 = second array member 
etc.

或者将响应转换为另一种格式,但在这里我无法给出任何建议,因为我不知道期望的是什么。
更多信息:

相关问题