Jmeter 邏輯控制器 之 if 控制器


最近工作不忙,利用空閑時間整理了下Jmeter的相關知識,下面給大家分享下Jmeter中 如果(if)控制的使用和應用。

如下圖:線程組 > 添加 > 邏輯控制器 > 如果 (if) 控制器

 

 

 

 

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

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

Evaluate for all children?:條件作用於每個子項(具體理解見后面的列子說明)

注:

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

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

一、默認用法,采用__jexl3 or __groovy 表達式

如下圖,if 控制器 下 有一個 訪問百度首頁 的取樣器,只有if條件滿足時,才會執行該取樣器。采用默認方式,將條件1==1,放入 __jexl3表達式中。

 

 如果不知道表達式如何使用,可使用Jmeter 的函數助手,如下:

 

 二、直接輸入條件

如下圖,去掉 “Interpret Condition as Variable Expression?” 前面復選框,直接輸入條件 1==1。訪問百度首頁的取樣器將被執行。

 

 

 三、條件中使用變量

很多情況下,需要根據用戶變量或者上一個取樣器的返回值來進行條件判斷,覺得是否需要執行某一個的取樣器。

如下,新增一個用戶變量:ischildren。條件:ischildren 的值為 y 的時候,才執行 訪問百度首頁 的取樣器。

 

 

 或者可以用表達式:${__jexl3("${ischildren}"=="y",)}。

四、Evaluate for all children? 的用法

在 上面了解了條件中如何使用變量,那么如果 if 控制器下的取樣器執行后,改變了該變量的值,if 控制器下 其后的取樣器還會被執行嗎?看看下面的列子:

 

 

 if 控制器下  有 3 個取樣器,變量 ischildren 的初始值為 y,if 控制器的條件為:${__jexl3("${ischildren}"=="y",)}。

開始滿足條件,那么應該執行 訪問百度首頁 、訪問百度新聞頁、訪問百度貼吧 3個取樣器,

但是 訪問百度新聞頁 執行后,將ischildren 的值變了 n,已經不能滿足 "${ischildren}"=="y" 條件。

所以 訪問百度貼吧 這個取樣器不會被執行。

 

如果這個時候,去掉  Evaluate for all children? 的勾選,會發生什么呢,大家可以自己動手試試。

補充:

條件有:

==  等於,如 1==1 或 ${__jexl3(1==1,)}

> 、< 大於 小於,如 2>1,1<2,或 ${__jexl3(2>1,)}    

>=、<= 大於等於  小於等於,如 2>=1 ,或 ${__jexl3(2>=1,)} 

!=、!不等於,非,如 "y"!="n",非 則取 != 的反值

多條件可用:|| 或,&& 和,如:2<5 && 2>1,${__jexl3(2<5 && 2>1,)}

另外,如果時字符串必須要用引號,變量都認為時字符串的形式,如:${__jexl3("${ischildren}"=="y",)}

 

今天分享到這里啦,大家多多指點,測試任務來了,又要干活了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM