JMeter学习笔记004-CSV文件行数控制循环次数

根据CSV文件行数控制循环次数

笔者在上一篇文章中提到,通过【循环控制器】+【CSV数据文件设置】的方式,可以实现基于CSV文件进行接口批量测试。

但是上一篇中【循环控制器】的循环次数,是笔者硬编码实现的。如果我们的CSV文件新增了内容,那么循环处理器的循环次数也需要进行调整,这才实际场景中,是比较low的做法。

本篇给大家介绍新的功能【BeanShell取样器】。

JMeter的BeanShell,是一个特别强大的功能,它完美兼容Java,并提供了log、vars等语法功能(log.info输出日志,vars.put、vats.get获取系统数据)。JMeter提供了很多种BeanShell,BeanShell预处理、BeanShell前置处理器、BeanShell后置处理器、BeanShell取样器、BeanShell断言等等,我们可以根据不同场景选择不同的BeanShell,其语法都是一样的。

我们的场景是根据CSV的行数,去控制【循环控制器】的循环次数,那么我们应该使用【BeanShell取样器】。

【线程组】-> 添加 -> 取样器 -> 【BeanShell取样器】

在这里插入图片描述

脚本代码如下:

// 导包
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;
// 获取系统变量,filePath是我用户自定义的变量,存放的是我csv的路径
String filePath = vars.get("filePath");

int fileLine;
// Java代码,获取文件行数
try {
	FileReader fileReader = new FileReader(new File(filePath));
	LineNumberReader numberReader = new LineNumberReader(fileReader);
	numberReader.skip(Long.MAX_VALUE);
	// 从0行开始,所以+1是实际文件行数,如果有文件头,不需要+1
	// fileLine = numberReader.getLineNumber() + 1;
	fileLine = numberReader.getLineNumber();
	numberReader.close();
} catch (Exception e){
  throw new RuntimeException("获取文件行数异常:" + e);
}
String fileLineStr = String.valueOf(fileLine);
// 将文件行数放入系统变量中
log.info("文件行数:" + fileLineStr);
vars.put("fileLine", fileLineStr);

BeanShell脚本中,将文件行数作为参数放入系统变量【fileLine】中,在循环控制器中引入即可。

在这里插入图片描述

关于如何引入csv文件及测试案例,可以参考笔者上一篇文章:JMeter学习笔记003-JMeter之CSV参数化

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值