JMeter:如何在循环中动态生成含多个ID的请求体?
实现动态构造指定格式请求体的方案
前提确认
假设你使用JSON提取器时设置的变量名称为productId,JMeter会自动生成以下变量:
productId_matchNr:提取到的ID总数productId_1、productId_2……productId_N:对应每个提取到的具体ID值
操作步骤
1. 添加JSR223前置处理器
在需要发送目标请求的Sampler上,添加「JSR223 PreProcessor」,选择Groovy语言,在脚本框中写入以下代码:
// 获取ID总数 def totalIds = vars.get("productId_matchNr") as int def productList = [] // 遍历所有ID,构造单个id对象 for (int i = 1; i <= totalIds; i++) { def currentId = vars.get("productId_" + i) productList.add([id: currentId]) } // 生成符合要求的JSON字符串,存入变量 vars.put("targetRequestBody", new groovy.json.JsonBuilder([products: productList]).toPrettyString())
2. 引用构造好的请求体
将目标请求的Body内容替换为${targetRequestBody},JMeter会自动根据提取到的ID数量,动态生成包含对应条目请求体。
比如提取到5个ID时,最终请求体格式为:
{ "products": [ { "id": "id1" }, { "id": "id2" }, { "id": "id3" }, { "id": "id4" }, { "id": "id5" } ] }
3. 适配调整
如果你的JSON提取器变量名不是productId,只需将代码中所有productId替换为你实际使用的变量名称即可。
内容的提问来源于stack exchange,提问作者hofov33846
相关产品推荐
相关产品推荐

