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

如何在JMeter中从CSV文件随机选取userId?

实现JMeter随机读取CSV中的userId

方法一:结合__Random和__CSVRead函数(无需加载全量数据)

这种方法适合超大规模CSV(比如百万级),不用把所有数据加载到内存,每次随机读取指定行:

  • 先统计你的CSV总行数(如果有表头,要减去表头行数,比如表头1行、数据50000行,总行数就是50001,有效数据行范围是2到50001)
  • 在需要使用userId的地方,用以下表达式生成随机行号并读取:
    ${__CSVRead(/path/to/your/userIds.csv,${__Random(2,50001,randomLine)})}
    
    解释:
    • __Random(2,50001,randomLine):生成2到50001之间的随机整数(对应数据行的行号),结果存入randomLine变量
    • __CSVRead(文件路径,行号):读取CSV对应行的内容(行号从1开始计数)

方法二:用Groovy脚本预加载全量数据(效率更高)

5万条数据的内存占用可以忽略,推荐用这种方法避免重复IO:

  1. 添加Setup线程组(仅执行一次,用来加载数据),在里面添加JSR223 Sampler,脚本如下:
    // 替换成你的CSV文件实际路径
    def csvPath = '/path/to/your/userIds.csv'
    def userIdList = new File(csvPath).readLines()
    // 如果CSV有表头,执行下面一行去掉表头;没有表头就注释掉
    userIdList.remove(0)
    // 把userId列表存入全局属性,供所有测试线程调用
    props.put('userIdList', userIdList)
    
  2. 在测试线程组里,添加JSR223 PreProcessor(放在需要使用userId的请求前),脚本如下:
    def userIdList = props.get('userIdList')
    def randomIdx = new Random().nextInt(userIdList.size())
    // 把随机选中的userId存入变量,后续用${randomUserId}调用
    vars.put('randomUserId', userIdList[randomIdx])
    
  3. 后续请求里直接用${randomUserId}就能拿到随机的userId

注意:Windows系统的文件路径要用双反斜杠(比如C:\\data\\userIds.csv)或者正斜杠(C:/data/userIds.csv)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 07:12:46