JMeter:如何在单次迭代请求中传递5个不同账号(从参数文件)
解决JMeter单次迭代内5次POST请求使用不同账号的问题
方法一:单CSV文件配合计数器(推荐)
无需多个CSV,一个文件即可实现单次迭代内取不同账号:
- 准备
account.csv文件,每行存一个账号(共20个),格式示例:2123 9890 xxxx ... - 添加CSV Data Set Config:
- 文件名:
account.csv - 变量名:
account - 共享模式:选择
Current thread group - 取消勾选
Stop thread on EOF,勾选Recycle on EOF(账号用完后循环)
- 文件名:
- 添加Counter元件:
- 起始值:1,递增:1,最大值:5
- 引用名称:
call_num - 勾选
Reset counter each iteration(每次迭代重置计数器到1)
- 在POST请求的参数中,使用
__CSVRead函数结合计数器取值:
原理:CSV索引从0开始,${__CSVRead(account.csv,${__intSum(${call_num},-1,)})}${call_num}是1-5,减1后对应第0-4行账号,单次迭代内5次调用依次取连续的5个账号。
方法二:用户定义变量结合动态变量引用
如果不想用CSV,可直接定义变量后动态调用:
- 添加用户定义变量,创建20个账号变量:
acc1=2123 acc2=9890 acc3=xxxx ... acc20=yyyy - 添加两个Counter元件:
- 全局计数器(控制每组起始账号):
- 起始值:1,递增:5,最大值:20
- 引用名称:
start_idx - 不勾选
Reset counter each iteration
- 本地计数器(控制单次迭代内的调用序号):
- 起始值:0,递增:1,最大值:4
- 引用名称:
call_offset - 勾选
Reset counter each iteration
- 全局计数器(控制每组起始账号):
- 在POST请求参数中,用
__V和__intSum函数拼接变量名:
原理:第一次迭代${__V(acc${__intSum(${start_idx},${call_offset},)})}start_idx=1,call_offset从0到4,依次取acc1到acc5;第二次迭代start_idx=6,取acc6到acc10,依此类推。
注意事项
- 20个账号刚好是5的倍数,两种方法都能完美分组;若账号数不是5的倍数,可调整CSV的
Recycle on EOF或计数器的最大值来适配。 - 若需要账号随机不重复,可在CSV配置中勾选
Shuffle,或结合__RandomFromMultipleVars函数实现。
内容的提问来源于stack exchange,提问作者Swetha K
相关产品推荐
相关产品推荐

