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

如何在单个JMeter线程组中使用多个CSV文件并迭代处理

单线程组下多CSV文件的性能测试方案

针对你不想新增线程组、又要分别从4个同结构CSV文件取数发送对应请求的场景,推荐以下3种可行方案:

方案1:多CSV配置+条件变量引用

  • 给每个CSV文件添加独立的CSV Data Set Config元件,分别指定文件路径,为每个文件的列设置独立变量名(比如csv1_username、csv1_password;csv2_username、csv2_password等)
  • 添加Counter元件,设置起始值为1、递增步长1,用于标记当前请求轮次
  • 在每个请求的参数中,通过JMeter内置函数做条件判断,指定对应CSV的变量:
    • Request1的参数直接引用csv1的变量:${csv1_username}、${csv1_password}
    • Request2的参数固定引用csv2的变量,若需循环取后续行,可开启CSV配置的“循环读取”选项
  • 优势:配置简单,无需代码,适合固定请求对应固定CSV的场景

方案2:动态切换CSV文件的参数化配置

  • 新建一个file_list.csv文件,每行写入一个目标CSV的文件名:
    userGroup1.csv
    userGroup2.csv
    userGroup3.csv
    userGroup4.csv
    
  • 添加第一个CSV Data Set Config读取file_list.csv,变量名设为current_csv,配置为“一次循环读取一行”
  • 添加第二个CSV Data Set Config,将“文件名”字段设为${current_csv},列变量名统一设为username、password、secret
  • 用Loop Controller包裹所有请求,循环次数设为4,每次循环读取一个CSV文件的第一行数据,发送对应请求
  • 优势:单个CSV更新时无需重新合并,只需修改目标文件即可,维护成本低

方案3:JSR223脚本手动读取CSV

  • 添加JSR223 PreProcessor到测试计划最外层,用Groovy代码手动读取4个CSV文件的指定行,将数据存入JMeter变量:
    // 读取csv1第一行数据
    def csv1Line = new File("userGroup1.csv").readLines()[0].split(",")
    vars.put("csv1_username", csv1Line[0])
    vars.put("csv1_password", csv1Line[1])
    vars.put("csv1_secret", csv1Line[2])
    
    // 读取csv2第一行数据,其余文件同理
    def csv2Line = new File("userGroup2.csv").readLines()[0].split(",")
    vars.put("csv2_username", csv2Line[0])
    vars.put("csv2_password", csv2Line[1])
    vars.put("csv2_secret", csv2Line[2])
    
  • 在各请求中直接引用对应变量,比如Request1用${csv1_username},Request2用${csv2_username}
  • 优势:完全自定义读取逻辑,支持复杂取数规则(比如按线程号取对应行、随机取数等)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 16:22:17