Jmeter-邏輯控制器If Controller的實例運用

一、If Controller概述

Expression (must evaluate to true or false) :表達式(值必須是true或false),也就是說,在右邊文本框中輸入的條件值必須是true 或 false,(默認情況下)

Interpret Condition as Variable Expression?:默認勾選項,將條件解釋為變量表達式(需要使用__jexl3 or __groovy 表達式,可用函數助手生成)

Evaluate for all children?:條件作用於每個子項(即意味着它的每個子元素在運行前都會運行一次 if 控制器裏面的條件表達式,看看是否還是 true,是的話就可以運行,false 就不運行

註:

1、文本框上的黃色感嘆號,就是提示你,建議採用__jexl3 or __groovy 表達式,以提高性能,也就是默認的方式。

2、if 控制器 只能作用於其下的子項

二、If Controller的實例運用

(一)直接輸入條件

  如圖,去掉 「Interpret Condition as Variable Expression?」 前面複選框,直接輸入條件 1==1。if控制器裏面的「按編號篩選列表-2106000014」的取樣器將被執行。

 

  

 

 

 

  執行結果如下圖:

(二)默認用法,採用__jexl3 or __groovy 表達式

案例描述

添加自定義的變量值,利用ForEach Controller進行讀取此變量值,然後將讀取的變量值保存到設定的變量中;當變量取值符合IF Controller中設定的條件時,則執行其下的業務請求並監控

業務說明:

以「版單管理列表」接口為例

> 添加用戶定義的變量code(3個:2106000007,2106000008,2106000009)

> 用ForEach控制器讀取變量codelike

> 接口入參prototypeCodeLike使用此變量值

> if控制器中判斷codelike等於2106000007時,執行控制器下面的取樣器

操作步驟:

1、目錄結構

 2、用戶定義的變量

  ForEach根據輸入變量前綴來循環遍歷,格式滿足{aa_1,aa_2,aa_3}的格式,注意 變量後是以_帶數字分隔的

3、ForEach控制器

 

4、在ForEach Controller下添加版單管理列表接口取樣器

  取樣器的請求中配置引用forEach讀取的參數 codelike

5、在ForEach Controller之下添加IF Controller,設置判斷真假的求值函數  

  ${__groovy(${codelike}==2106000007,)} 表示ForEach Controller中讀取的變量值為”2106000007″時,才會執行IF Controller之下的請求

6、執行結果

  【版料管理列表-${codelike}】接口取樣器,執行滿足forEach設定讀取添加的所有變量值,當if為true時,則執行if控制器下的取樣器【if為true時,執行版單管理列表-${codelike}】,所以最終執行結果如圖

(三)Evaluate for all children? 的用法

  勾選了之後意味着它的每個子元素在運行前都會運行一次 if 控制器裏面的條件表達式,看看是否還是 true,是的話就可以運行,false 就不運行。演示如下:

1、勾選上,使條件作用於每個子項

2、添加JSR223 後置處理器或前置處理器,將code_1的值變為123

 3、執行結果

  由於變量code_1的值變了,導致不符合if條件${__groovy(${codelike}==2106000007,)},所以便不會執行if控制器下的【版單管理列表-應用於所有子項】取樣器

  附上去掉勾選的執行結果