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

如何在JMeter中实现每次迭代读取不同CSV文件

实现JMeter每次迭代读取一个独立CSV文件

方案一:文件名有规律时(如test101.csv、test102.csv)

这种情况可以通过计数器+CSV Data Set Config组合实现,步骤如下:

  • 添加「计数器」元件:

    • 起始值设为101(对应你的第一个文件编号)
    • 增量设为1
    • 最大值设为103(对应你的最后一个文件编号)
    • 引用名称填fileNumber(自定义变量名,后续会用到)
    • 勾选「每次迭代递增」
  • 添加「CSV Data Set Config」元件:

    • 文件名栏填写:c://Testing/test${fileNumber}.csv,通过变量拼接出每次迭代要读取的文件路径
    • 根据你的CSV内容配置变量名、分隔符、编码等参数
    • 若每个CSV文件仅包含一组数据,保持「一次仅读取一行」默认勾选即可;若文件有多行数据,可根据需求调整读取策略

方案二:文件名无规律时(需读取文件夹下所有CSV文件)

如果文件名没有统一编号规则,可通过JSR223 PreProcessor动态获取文件列表并按顺序读取:

  • 添加「JSR223 PreProcessor」到线程组下:

    • 脚本语言选择Groovy(性能最优)
    • 粘贴以下脚本:
      // 目标文件夹路径
      def folder = new File("c://Testing")
      // 获取文件夹下所有CSV文件并按名称排序
      def csvFiles = folder.listFiles({ file -> file.name.endsWith('.csv') } as FileFilter).sort()
      
      // 首次执行时将文件列表和索引存入JMeter属性
      if (!props.containsKey('csvFiles')) {
          props.put('csvFiles', csvFiles)
          props.put('currentFileIndex', 0)
      }
      
      // 获取当前要读取的文件索引和路径
      def currentIndex = props.get('currentFileIndex') as int
      // 若迭代次数超过文件数量,重置索引实现循环读取(可选)
      if (currentIndex >= csvFiles.size()) {
          currentIndex = 0
          props.put('currentFileIndex', 0)
      }
      def currentFile = csvFiles[currentIndex]
      
      // 将当前文件路径存入JMeter变量
      vars.put('currentCsvFile', currentFile.getAbsolutePath())
      // 递增索引
      props.put('currentFileIndex', currentIndex + 1)
      
  • 添加「CSV Data Set Config」元件:

    • 文件名栏填写:${currentCsvFile},直接引用脚本生成的当前文件路径变量
    • 其他配置(变量名、分隔符等)根据你的CSV内容设置

注意事项

  • 线程组的「迭代次数」需设置为与CSV文件数量一致(若不需要循环读取)
  • 确保JMeter有目标文件夹的读取权限
  • 若CSV文件编码特殊,需在CSV Data Set Config中指定对应编码(如UTF-8、GBK)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 11:02:47