1. 程式人生 > >Jmeter系列(50)- 詳解 If 控制器

Jmeter系列(50)- 詳解 If 控制器

如果你想從頭學習Jmeter,可以看看這個系列的文章哦

https://www.cnblogs.com/poloyy/category/1746599.html

 

簡單介紹

可以通過條件來控制是否執行其下面的測試元件(子元素)

 

If 控制器

 

If 控制器介面介紹

  • Expression (must evaluate to true or false) :表示式(值必須是 true 或 false ),也就是說,在右邊文字框中輸入的條件值必須是 true 或 false(預設情況下)
  • Interpret Condition as Variable Expression?:預設勾選,將條件解釋為變量表達式(需要使用 ${__jexl3 } 或 ${__groovy } 表示式)
  • Evaluate for all children?:條件作用於每個子項(具體理解見後面的栗子說明)

 

黃色感嘆號那一段文字

就是建議要選中 Interpret Condition as Variable Expression?,然後通過 ${__jexl3 } 或 ${__groovy } 表示式返回 true 或 false

 

擴充套件

如果要測試上一個樣本(sampler)是否成功(code=200),則可以使用 ${JMeterThread.last_sample_ok} 

 

最簡單的栗子

執行緒組結構樹

 

第一個 if 控制器

注意:如果取消選中 Interpret Condition as Variable Expression?,這可能會導致效能損失很大,並使測試的可擴充套件性降低,所以不推薦不勾選

 

第二個使用 groovy 表示式的 if 控制器

 

第三個使用 jexl3 表示式的 if 控制器

 

檢視結果樹

三個 if 控制器的表示式都是 true

 

Expression 中使用變數的栗子

執行緒組結構樹

 

使用者自定義變數

 

if 控制器

因為是字串,所以要加雙引號哦 "" 

 

檢視結果樹

 

勾選 Evaluate for all children? 的栗子

執行緒組結構樹

一共三個請求,第二個請求加了個後置處理器

 

使用者自定義變數

 

if 控制器

因為是字串,所以要加雙引號哦 ""

 

JSR223 後置處理器

 

檢視結果樹

 

總結

勾選了 Evaluate for all children? 意味著它的每個子元素在執行前都會執行一次 if 控制器裡面的條件表示式,看看是否還是 true,是的話就可以執行,false 就不執行

&n