You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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)或自定义脚本中,维护一个全局数组存储请求体条目,每次循环执行以下操作:

    1. 调用Mountebank接口获取最新的SKU和Qty参数
    2. 将新参数对象追加到数组中
    3. 将数组转为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 16:42:38