Jmeter——循環控制器中實現Counter計數器的次數重置

近期在使用Jmeter編寫個輔助測試的腳本,用到了多個Loop Controller和Counter。

當時想的思路就是三個可變的數量值,使用循環實現;但第三個可變值的數量次數,是基於第二次循環中得到的結果才能確認最終次數,每次的結果還會有不一樣的情況。基於思路,先寫了個線性腳本,實現如下所示:

但實際中,第三層循環,並沒有按自己預期來實現,所以就想到了Counter計數器,將腳本中加入了Counter計數器,實現如下所示:

圖中的數字說明:${for1}${for2}${for3}

${for1}是第一個循環器中的Counter變量名
${for2}是第二個循環器中的Counter變量名
${for3}是第三個循環器中的Counter變量名

從圖中可以看出,${for3}是累加的,不會隨着一次循環結束,計數自動重置。

我所想實現的是,第二層循環中的第一次獲取的結果是5個數組,則從索引0 ~ 4依次按置執行第三層循環;第二層循環中的第二次獲取的結果是8個數組,則從索引0 ~ 7依次按置執行第三層循環。

但這樣操作下來,第二次是會直接從索引5開始執行,這樣就會丟失一部分數據,顯然不是自己所想的。

中途也試過很多錯,都不能實現計數重置的功能。好在,某天想起了官方文檔,這個功能在文檔是有描述的,如下所示:

文檔中描述的很清楚,可以使用${__jm__LC__idx}的方式實現index從0開始,其中LC爲控制器的名稱。

使用官網的文檔,在腳本中加入變量使用,運行如下所示:

從圖中可知,第三層循環的第四個數字就是我所想要的,終於解決了心中的問題。

圖中的數字說明:${for1}${for2}${for3}_${resetForNumber}

前三個數字在之前已經說明過了,這裏只說明下${resetForNumber},這個變量是通過BeanShell Sampler中獲取的,因爲將官網給出的方案寫在了BeanShell Sampler種,代碼如下所示:

long i=0;
i = ${__jm__Loop Controller3__idx};
vars.put("resetForNumber",String.valueOf(i));

雖然,描述起來很簡單,但的確是實際腳本實現的過程中遇到的一個阻礙,好在問題解決了。

所以特整理此篇,希望對以後有需要的朋友有所幫助。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章