一、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控制器下的【版單管理列表-應用於所有子項】取樣器
附上去掉勾選的執行結果