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

使用Beanshell Pre Processor实现单线程单次请求生成30个ID

解决方案:单线程单次GET请求生成30个ID(Beanshell实现)

问题背景

单线程场景下,需通过1次GET API请求生成30个personId,要求用Beanshell循环30次拼接字符串实现,使用Loop Controller未达成需求。

API响应示例:

{"code":"CMSI0000","message":"Success.","data":[{"personId":"8a8782188a459e86018a67d58a5c2885"},{"personId":"8a8782188a459e86018a67d58a5c2885"},{"personId":"8a8782188a459e86018a67d58a5c2885"}]}

Beanshell实现步骤

  • 前置准备:添加HTTP Request采样器调用目标GET API,通过JSON Extractor提取单个personId(存入变量singlePersonId)。
  • 添加Beanshell PostProcessor:在HTTP Request采样器下添加该组件,写入以下脚本:
// 初始化拼接字符串
StringBuilder idList = new StringBuilder("[");

// 循环30次拼接personId
for (int i = 0; i < 30; i++) {
    // 获取提取到的单个personId
    String pid = vars.get("singlePersonId");
    // 拼接JSON格式对象
    idList.append("{\"personId\":\"").append(pid).append("\"}");
    // 最后一次循环不添加逗号
    if (i != 29) {
        idList.append(",");
    }
}

// 闭合数组
idList.append("]");

// 将结果存入JMeter变量*generatedIdList*,供后续使用
vars.put("generatedIdList", idList.toString());

// 可选:打印结果到控制台验证
log.info("生成的30个ID列表:" + idList.toString());
  • 验证结果:通过Debug Sampler查看generatedIdList变量值,确认是否生成包含30个personId的JSON数组。

为什么Loop Controller不适用?

Loop Controller会重复执行其下的采样器,导致多次调用GET API,不符合“单次请求生成30个ID”的要求。而Beanshell循环是在单次请求响应后,通过内存拼接字符串生成多ID列表,仅调用一次API。

内容的提问来源于stack exchange,提问作者Abhijith Lomada

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 21:30:26