栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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参数化

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1028024.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号