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

一加一發表於2021-06-13

一、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控制器下的【版單管理列表-應用於所有子項】取樣器

  附上去掉勾選的執行結果

 

相關文章