在用 JMeter 做測試時,經(jīng)常需要調(diào)用外部 CSV 文件的數(shù)據(jù)到腳本中使用,如果我們想對 CSV 文件中數(shù)據(jù)的行數(shù)進行統(tǒng)計,這個怎么做呢?

針對上面表格的數(shù)據(jù),我們一起來學習一下如何統(tǒng)計數(shù)據(jù)行數(shù)吧。
首先創(chuàng)建一個線程組,在線程組下添加一個僅一次控制器,為什么添加這個控制器呢?一般我們只需要對表格數(shù)據(jù)行數(shù)進行統(tǒng)計一次就行。
接著在控制器下添加一個前置處理器 BeanShell PreProcessor ,然后在里面編寫統(tǒng)計數(shù)據(jù)行數(shù)的 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文件行數(shù):"+rowCount);
上面圈出來的腳本中,第3行后面那個括號內(nèi)是數(shù)據(jù)文件的路徑,這個路徑可以是絕對路徑,也可以是相對路徑,筆者這里寫的是相對路徑,大家需要根據(jù)自己的實際情況編寫。最終統(tǒng)計到的數(shù)據(jù)行數(shù)會存到 rowCount 變量里面,在其他地方想用這個行數(shù)值時只需要調(diào)用 rowCount 變量即可。
到這里, BeanShell PreProcessor 部分的內(nèi)容已經(jīng)配置完成。但還缺一樣?xùn)|西,我們知道這個是取樣器的前置處理器,可是現(xiàn)在沒有取樣器去觸發(fā)這個前置處理器,所以我們要在控制器下添加一個取樣器,這里添加一個調(diào)試使用的 java 請求 取樣器。
為了看效果,我們在線程組下添加一個 java 請求 取樣器和 察看結(jié)果樹 監(jiān)聽器,另外在這個 java 請求 名稱后面加上調(diào)用 rowCount 變量。

接下來運行一下腳本。

從上圖可以看到 CSV 文件中的數(shù)據(jù)行數(shù)已經(jīng)統(tǒng)計完成而且被調(diào)用到了。
這里統(tǒng)計的是表格里面所有數(shù)據(jù)的行數(shù),但從最開始的表格內(nèi)容可以看到第一行是標題,如果我們只想統(tǒng)計非標題數(shù)據(jù)的行數(shù)又應(yīng)該如何寫呢?
比較簡單,在第8行 Script 腳本后面加一行 rowCount=rowCount-1; 即可。

再次運行一次腳本。

非標題數(shù)據(jù)的行數(shù)已經(jīng)統(tǒng)計到了。
以上就是 JMeter 讀取 CSV 文件數(shù)據(jù)行數(shù)的方法,希望對大家有幫助。