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

JMeter测试执行时更新数据源并在同次运行中复用的实现咨询

结论

该场景可以100%在JMeter原生能力范围内实现,不需要依赖CSV、数据库等外部存储,也不需要额外写入本地文件。

核心实现思路

核心是利用JMeter自带的**全局属性(props)**做内存级存储,全局属性是JMeter进程级别的变量,只要测试进程不停止,存储的值就会一直保留,完美匹配同次测试运行内迭代更新的需求。

具体操作步骤
  • 1、初始化初始ID
    新增一个setUp线程组,在组内添加JSR223采样器,写入初始ID到全局属性:
    // 替换引号里的内容为你的初始有效数字ID
    props.put("current_id", "1")
    
  • 2、构造POST请求
    在业务线程组中新建HTTP请求,请求方法选POST,路径填/items/new,请求体填写:
    {
        "id": "${__P(current_id,)}"
    }
    
    其中${__P()}是JMeter内置的读取全局属性的函数,可以直接拿到最新的id值。
  • 3、提取响应返回的新ID
    在POST请求下添加JSON提取器,配置如下:
    • 引用名称:new_id
    • JSON路径表达式:$.id(可根据实际响应结构调整)
    • 匹配数字:0
  • 4、更新全局存储的ID
    在POST请求下再添加JSR223后置处理器,写入代码实时更新全局属性:
    props.put("current_id", vars.get("new_id"))
    
  • 5、配置循环执行逻辑
    给业务线程组设置你需要的循环次数(选“永远”即可实现无限循环迭代),每一轮循环都会自动读取上一轮更新后的最新ID发起请求,完成你需要的ID迭代替换逻辑。
注意事项

如果是多线程并发场景,需要给全局属性的写入逻辑加锁避免并发覆盖,修改JSR223后置处理器的代码即可:

synchronized(props){
  props.put("current_id", vars.get("new_id"))
}

内容的提问来源于stack exchange,提问作者Michael Derevyanko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:18:00