Jmeter如何在测试线程中使用全局CSV Data Set Config
问题产生原因
- 共享模式配置不符合预期:
CSV Data Set Config的Sharing mode(共享模式)设置错误是该问题的核心诱因:- 若设置为
Current thread,每个测试线程会独立维护CSV读取指针,所有线程启动后均从第一行开始读取,首次迭代所有线程都会拿到第一行数据 - 若设置为
Current thread group,每个线程组会独立维护CSV读取指针,不同线程组的读取操作互不干扰,多个线程组首次迭代自然都会拿到第一行数据
- 若设置为
- CSV组件放置位置错误:如果将
CSV Data Set Config分别放在每个线程组内部,相当于每个线程组独立初始化了一个CSV读取组件,各自从第一行开始读取,也会出现该问题 - 迭代配置不匹配:若线程组的循环次数设置为1,且你使用了线程独立的共享模式,所有线程只会触发一次CSV读取,都会返回首行数据
修复方案
如果你需要所有线程、所有线程组共享同一个CSV读取指针,按迭代顺序依次读取下一行,按照以下步骤操作即可:
- 调整组件放置位置:将
CSV Data Set Config移动到测试计划的根层级,不要放在任何线程组内部,确保所有线程组复用同一个CSV读取组件 - 修正共享模式配置:将
Sharing mode设置为All threads,确保所有线程、所有线程组共用同一个CSV读取指针,每次读取完成后指针自动下移一行 - 配置EOF处理逻辑:根据测试需求调整文件读取完毕后的处理规则:
- 若CSV读完就结束测试:设置
Recycle on EOF = False,Stop thread on EOF = True - 若CSV读完需要循环复用数据:设置
Recycle on EOF = True,Stop thread on EOF = False
- 若CSV读完就结束测试:设置
- 验证迭代配置:确保线程组的循环次数设置符合测试需求,如果需要读取多行CSV,循环次数需要大于1,或设置为永远(配合EOF停止逻辑使用)
内容的提问来源于stack exchange,提问作者usersam
相关产品推荐
相关产品推荐

