JMeter能否在每次循环时自动生成新增条目请求体?
可行,以下是具体实现思路
当前请求体
[ { "sku": "${SKU1}", "qty": "${Quantity1}" } ]
目标循环后请求体
[ { "sku": "${SKU1}", "qty": "${Quantity1}" }, { "sku": "${SKU2}", "qty": "${Quantity2}" } ]
实现步骤
1. 配置Mountebank提供递增参数
利用Mountebank的decorate功能维护计数器,每次请求返回递增的SKU和Qty值。示例配置如下:{ "port": 2525, "imposters": [ { "port": 8080, "protocol": "http", "stubs": [ { "responses": [ { "decorate": "function(request, state) { state.counter = state.counter || 1; const sku = `SKU${state.counter}`; const qty = `Quantity${state.counter}`; state.counter++; return { body: { sku, qty } }; }" } ] } ] } ] }启动Mountebank后,每次访问
http://localhost:8080都会返回下一组SKU和Qty。2. 循环追加请求体条目
在测试工具(如Postman)或自定义脚本中,维护一个全局数组存储请求体条目,每次循环执行以下操作:- 调用Mountebank接口获取最新的SKU和Qty参数
- 将新参数对象追加到数组中
- 将数组转为JSON字符串作为当前请求体
示例Postman前置脚本:
// 从全局变量读取已有的请求体数组,无则初始化空数组 let reqBodyArray = pm.globals.get("reqBodyArray") || []; // 请求Mountebank获取新参数 pm.sendRequest("http://localhost:8080", (err, res) => { if (!err) { const newItem = res.json(); // 追加新条目 reqBodyArray.push(newItem); // 更新全局变量 pm.globals.set("reqBodyArray", reqBodyArray); // 设置当前请求体 pm.request.body.raw = JSON.stringify(reqBodyArray, null, 2); } });3. 触发循环
使用测试工具的循环功能(如Postman的Collection Runner循环次数设置),或自定义脚本的循环逻辑,即可实现每次循环自动新增请求体条目。
内容的提问来源于stack exchange,提问作者Ian Roy Fuentes
相关产品推荐
相关产品推荐

