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

如何在JMeter中用CSV数据结合Parallel Controller实现并行SFTP Get?

实现Parallel Controller并行读取CSV不同账号执行SFTP Get的方法

方法1:提前加载所有CSV数据到全局属性

  • 在测试计划最顶部添加Setup Thread Group(仅运行1次,用于初始化数据)
  • 在Setup线程组内添加CSV Data Set Config,配置你的CSV文件路径、列分隔符,设置Recycle on EOF?为False、Stop thread on EOF?为False
  • 再添加一个JSR223 Sampler,用Groovy脚本把所有账号数据存入JMeter全局属性(全局属性可被所有线程/控制器共享):
    // 替换为你的CSV实际路径,或通过vars.get("csv_file")引用CSV配置里的路径变量
    def csvFile = new File("/path/to/your/users.csv")
    def lines = csvFile.readLines().drop(1) // drop(1)跳过表头,没有表头可删除
    lines.eachWithIndex { line, idx ->
        def account = line.split(",") // 按你的CSV分隔符调整,比如\t对应制表符
        props.setProperty("user_${idx+1}_name", account[0].trim())
        props.setProperty("user_${idx+1}_pwd", account[1].trim())
    }
    props.setProperty("total_accounts", lines.size().toString())
    
  • 在Parallel Controller内添加与CSV账号数相同的SFTP Request Sampler,每个Sampler引用对应属性:
    • 第一个Sampler:用户名填${__P(user_1_name,)},密码填${__P(user_1_pwd,)}
    • 第二个Sampler:用户名填${__P(user_2_name,)},密码填${__P(user_2_pwd,)},以此类推

方法2:循环控制器+计数器搭配CSV读取

  • 在Parallel Controller外层添加Loop Controller,循环次数设为CSV中的账号总数
  • 在Loop Controller内添加Counter元件:起始值1,增量1,最大值设为账号总数,变量名设为user_idx
  • 再添加CSV Data Set Config,配置文件路径与分隔符,设置Sharing Mode为Current thread group,Recycle on EOF?为False,Stop thread on EOF?为False,变量名设为username,password
  • 将Parallel Controller放到Loop Controller内部,SFTP Request Sampler直接引用${username}和${password}即可。每次循环CSV会读取一行新账号,Parallel Controller用当前账号执行并行操作

方法3:直接用函数读取CSV指定行

如果账号数量较少,可直接在每个SFTP Sampler中用__CSVRead函数读取指定行:

  • 第一个Sampler:用户名${__CSVRead(/path/to/your/users.csv,0)},密码${__CSVRead(/path/to/your/users.csv,1)}
  • 第二个Sampler:用户名${__CSVRead(/path/to/your/users.csv,0,next)},密码${__CSVRead(/path/to/your/users.csv,1)}
  • 后续Sampler重复添加next参数即可逐行读取,函数中数字0、1对应CSV的列索引(从0开始)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:45:33