Jmeter单线程如何循环获取CSV参数

博客介绍了在Jmeter中,当while或循环控制器使用CSV Data Set Config配置元件时,循环读取CSV参数的问题及解决办法。包括将线程组循环次数设为永远,设置CVS Data Set Config相关参数,还可在线程最后请求下增加BeanShell PostProcessor防止重复执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:

CSV Data Set Config配置元件默认情况下,读取的文件仅打开一次,每个线程读取该文件不同的行。行读取的顺序取决于请求执行的顺序。

 

问题:

while控制器或者循环控制器使用CSV Data Set Config配置元件,如何循环读取CSV参数

 

解决办法:

1、把线程组的循环次数设置为永远


2、把CVS Data Set Config 中 的 Recycle on EOF 设为False ,Stop thread on EOF 设为Ture

Recycle on EOF :读到文件末尾的时候是否结束
Stop thread on EOF :读到文件末尾是否结束线程
EOF :End Of File的缩写


3、防止线程重复执行:线程的最后一个请求下增加BeanShell PostProcessor

prev.setStopTestNow(true);

注意:CVS Data Set Config  要放到while控制器或者循环控制器里面。线程的最后一个请求放到while控制器或者循环控制器外面。

### JMeter单线程对应Token调用方法 在JMeter中,当需要为每个线程分配唯一的`token`并用于后续请求时,可以通过以下方式实现: #### 方法一:使用JSON提取器与用户定义变量 通过JSON提取器从响应中提取`token`后,将其存储到用户的特定变量中。此方法利用了JMeter的`${__threadNum}`函数来区分不同线程。 1. **提取Token** 在登录接口的HTTP请求下添加一个JSON提取器,配置如下: - 变量名称:`token_${__threadNum}` - JSON路径表达式:假设返回结构为`{"data":{"token":"abc"}}`,则填写`.data.token` 2. **保存Token至线程专属变量** 提取后的`token`会自动绑定到当前线程,并带有线程编号作为唯一标识符[^1]。 3. **使用Token** 在后续请求中,通过`${token_}${__threadNum}`的方式引用该线程独有的`token`值。 #### 方法二:借助BeanShell后置处理器 对于更复杂的场景,可采用BeanShell脚本处理逻辑。 1. **登录接口后设置全局属性** 登录成功后,在其后添加一个BeanShell后置处理器,编写如下代码: ```java String token = vars.get("token"); // 假设前面已经提取过名为"token"的变量 props.put("token_" + ctx.getThreadNum(), token); // 将token按线程号存入全局属性 ``` 2. **读取指定线程的Token** 后续请求中可通过以下语法访问相应线程的`token`: ```text ${__P(token_${__threadNum})} ``` 这种方法确保了每条线程都能获得自己独立的身份验证凭证[^2]。 #### 方法三:运用CSV Data Set Config组件 如果预先知道所有可能产生的tokens,则可以提前准备一份包含这些数据的文件供各线程循环读取。 1. 创建一个CSV文件,内容形如: ``` token1 token2 ... tokenN ``` 2. 配置CSV Data Set Config元件指向上述文件路径,并设定共享模式为“All threads”。 如此操作之后,每次迭代都会依次加载新的记录给各个执行单元应用[^4]。 ```python # 示例Python伪代码展示概念而非实际运行于JMeter内部 for i in range(threads_count): # 假设有n个线程 thread_tokens[i] = fetch_unique_token() # 获取独属于第i个线程的令牌 ``` 以上三种方案均可满足需求,具体选用哪一种取决于项目的复杂程度以及个人偏好。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SwTesting

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值