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

JMeter如何在经过X秒后更改File Upload path配置

JMeter 定时轮询切换上传文件路径实现方案

CSV Data Set Config 本身不支持按时间间隔触发读取,它的默认逻辑是每次线程迭代时按顺序读取下一行,和时间维度无关,没法直接配置成每分钟读一次路径。可以通过「预加载路径列表+前置处理器判断时间差」的方式实现需求,具体步骤如下:

  • 第一步:准备路径配置文件
    新建纯文本CSV文件(例如命名为file_paths.csv),无表头,每行写一个待上传测试文件的绝对路径,共60行对应60个测试文件,示例内容:
    D:/testdata/upload_file1.docx
    D:/testdata/upload_file2.docx
    ...
    D:/testdata/upload_file60.docx
    
  • 第二步:预加载所有文件路径到内存
    在线程组下新增setUp Thread Group(默认会在正式测试逻辑执行前运行一次),在该线程组下添加JSR223 Sampler,脚本语言选择groovy,输入以下代码:
    // 读取CSV中所有文件路径存入全局列表
    List<String> uploadFilePaths = new File("D:/your_config_path/file_paths.csv").readLines()
    props.put("all_upload_paths", uploadFilePaths)
    props.put("current_path_index", 0) // 初始使用第一个文件,索引从0开始
    props.put("last_switch_timestamp", System.currentTimeMillis()) // 记录上次切换文件的时间戳
    
  • 第三步:添加时间判断逻辑自动切换文件
    回到正式业务线程组,在负责文件上传的HTTP请求下添加JSR223 PreProcessor(每次发请求前会自动执行),脚本语言选groovy,输入以下代码:
    long currentTime = System.currentTimeMillis()
    long lastSwitchTime = props.get("last_switch_timestamp") as long
    List<String> pathList = props.get("all_upload_paths") as List<String>
    int currentIndex = props.get("current_path_index") as int
    
    // 达到60秒间隔则切换到下一个文件
    if (currentTime - lastSwitchTime >= 60000) {
        currentIndex = (currentIndex + 1) % pathList.size() // 轮完60个文件后自动回到第一个循环
        props.put("current_path_index", currentIndex)
        props.put("last_switch_timestamp", currentTime)
    }
    
    // 将当前生效的文件路径存入变量,供上传请求调用
    vars.put("active_upload_path", pathList.get(currentIndex))
    
  • 第四步:配置上传请求
    打开HTTP请求的「Files Upload」标签页,在File Path输入框中直接填${active_upload_path},其余参数(文件参数名、MIME类型)按接口实际要求填写即可。
  • 可选配置:控制请求频率
    如果需要固定接口调用间隔(比如每秒1次),在HTTP请求同级添加Constant Timer,配置对应的请求间隔即可,该配置不会影响文件切换逻辑——文件切换只判断时间差,和请求发送次数无关。

注意事项:

  • 脚本中60000是文件切换间隔,单位为毫秒,如果需要调整为X秒切换,直接将该值改为X * 1000即可。
  • 文件路径建议填写JMeter可直接访问的绝对路径,如果是分布式压测,需要将测试文件放在所有压测节点的相同路径下,避免出现文件找不到的报错。
  • 多线程压测场景下该配置同样生效,因为路径列表、当前索引存在JMeter全局属性中,所有线程共用同一个切换状态,不会出现多线程读取不同文件的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 23:36:08