在用 JMeter 做测试时,经常需要调用外部 CSV 文件的数据到脚本中使用,如果我们想对 CSV 文件中数据的行数进行统计,这个怎么做呢?
针对上面表格的数据,我们一起来学习一下如何统计数据行数吧。
首先创建一个线程组,在线程组下添加一个仅一次控制器
,为什么添加这个控制器呢?一般我们只需要对表格数据行数进行统计一次就行。
接着在控制器下添加一个前置处理器 BeanShell PreProcessor
,然后在里面编写统计数据行数的 Script 脚本。
Script 脚本代码贴一下:
import java.io.BufferedReader;
import java.io.FileReader;
BufferedReader br=new BufferedReader(new FileReader("..\\data\\心知天气.csv"));
String tmpStr="";
int rowCount=0;
while(tmeStr=br.readLine()!=null){
rowCount++;
}
vars.put("rowCount",String.valueOf(rowCount));
log.info("CSV文件行数:"+rowCount);
上面圈出来的脚本中,第3行后面那个括号内是数据文件的路径,这个路径可以是绝对路径,也可以是相对路径,笔者这里写的是相对路径,大家需要根据自己的实际情况编写。最终统计到的数据行数会存到 rowCount 变量里面,在其他地方想用这个行数值时只需要调用 rowCount 变量即可。
到这里, BeanShell PreProcessor
部分的内容已经配置完成。但还缺一样东西,我们知道这个是取样器的前置处理器,可是现在没有取样器去触发这个前置处理器,所以我们要在控制器下添加一个取样器,这里添加一个调试使用的 java 请求
取样器。
为了看效果,我们在线程组下添加一个 java 请求
取样器和 察看结果树
监听器,另外在这个 java 请求
名称后面加上调用 rowCount 变量。
接下来运行一下脚本。
从上图可以看到 CSV 文件中的数据行数已经统计完成而且被调用到了。
这里统计的是表格里面所有数据的行数,但从最开始的表格内容可以看到第一行是标题,如果我们只想统计非标题数据的行数又应该如何写呢?
比较简单,在第8行 Script 脚本后面加一行 rowCount=rowCount-1;
即可。
再次运行一次脚本。
非标题数据的行数已经统计到了。
以上就是 JMeter 读取 CSV 文件数据行数的方法,希望对大家有帮助。