2017-09-08 25 views
0

目標:JMeter的 - 反覆運行雖然控制器

我想訪問的形式http:localhost/path/item/${id}其中id是一個隨機變量的10周不同的網址。對於這些URL中的每一個,我都希望請求它們直到響應返回指定的字符串。

當前設置:

我的情況下有它的一個HTTP請求雖然控制器。條件看起來像${__javaScript('${response}'.indexOf("my string") == -1,)}response變量通過JSON提取器保存)。我也有循環的線程組集數到10

問題:

我的測試計劃工作正常,但只有一個URL。就好像它忽略了循環計數設置。假設While Controller每個URL發出兩個請求,它只總共發出兩個請求,而不是預期的20.

這是令人費解的,因爲如果我使用循環控制器的循環計數爲5,它將產生50個總請求。

我該如何達到理想的行爲?

回答

0

不能100%肯定沒有看到整個計劃,但我懷疑這是因爲你沒有爲下一次迭代不設置${response},在它達到true條件後。即

  1. 第一次迭代開始時,和${response}是空的/未定義==>進入而
  2. 在內while一些迭代它設置${response}左右,即${__javaScript('${response}'.indexOf("my string") == -1,)}給出true ==>雖然退出
  3. 接着迭代開始。如果此時${response}仍然與先前的迭代相同,則它將永遠不會輸入while,因爲它已經是真實的。

如果是這種情況,請在迭代開始時重置值。

要重置價值,增加BeanShell的採樣次或者刪除一個變量:

vars.remove("response"); 

或將其值設置爲空/別的東西:

vars.put("response", ""); 

如果這不是問題,在jmeter.log尋找例外。可能是由於錯誤,您的腳本正在退出。

+0

這聽起來是正確的,但我將如何取消設置'response'變量?目前它已在while控制器中的JSON提取器中分配。如何在線程組循環計數的每次迭代中取消設置? –

+0

@JaimeTur將它添加到解決方案中 –

相關問題