邏輯控制之IF條件控制器
測驗環境
JMeter-5.4.1
回圈控制器介紹
添加While Controller
右鍵執行緒組->添加->邏輯控制器->While控制器

控制器面板介紹
添加后,面板如下

僅Expression值為true,才會執行位于其下的操作
最好勾選(默認配置)Interpret Condition as Variable Expression?,這樣Expression輸入框可以有兩種輸入選擇:
-
輸入一個值為
true或者false的變數比如,如果你想測驗,最后一個采樣器執行是否成功,可以輸入
${JMeterThread.last_sample_ok} -
輸入對bool運算式求值的函式(建議使用
${__jexl3()},當然也可以用支持__groovy) ,形如${__jexl3(${COUNT} < 10 && "${VAR}" == "abcd",)}
例如,沒勾選上述配置之前,使用條件:${__jexl3(${VAR} == 23)},該條件計算結果(true或者false)會被傳遞給JavaScript,最后由JavaScript反回該結果值,勾選上述配置之后,會將該條件計算結果直接與true比較,不需要使用JavaScript.
檢測變數是否為定義或者為null,可以采用以下運算式,假設變數命名為 myVar:
${__jexl3("${myVar}" == "\${myVar}")}
或者:
${__jexl3("${myVar}" != "\${myVar}")}
如果不勾選 Interpret Condition as Variable Expression? 控制器會使用javascript計算運算式,這會帶來很大的性能消耗,并且降低測驗的擴展性,
Evaluate for all children
如果勾選,則執行其下所有子組件時都會重新計算條件值,否則僅在進入控制器時時進行計算
示例:如下圖,If Controller條件為${__jexl3("${myVar}" == "\${myVar}")},執行HTTP Request1之前沒有設定myVar變數,

沒勾選Evaluate for all children之前,運行時,HTTP Request2也會被執行,反之,HTTP Request2不會被執行,
例子(JavaScript)
${COUNT} < 10"${VAR}" == "abcd"
如果在解釋代碼時出錯,那么條件結果值會被設定為false
當使用__groovy時,注意不要在字串中使用變數替換,形如${__groovy("${myVar}" == 1)},否則使用了改變腳本的變數不能被快取,取而代之,使用vars.get("myVar"),參見下文
例子(Variable Expression)
${__groovy(vars.get("myVar") != "Invalid" )}(檢查myVar變數是否等于Invalid)${__groovy(vars.get("myInt").toInteger() <=4 )}(檢查myInt變數是否小于等于4)${__groovy(vars.get("myMissing") != null )}(檢查是否設定了myMissing變數)${__jexl3(${COUNT} < 10)}${RESULT}${JMeterThread.last_sample_ok}(檢查最后一個采樣器采樣是否成功)
作者:授客
微信/QQ:1033553122
全國軟體測驗QQ交流群:7156436
Git地址:https://gitee.com/ishouke
友情提示:限于時間倉促,文中可能存在錯誤,歡迎指正、評論!
作者五行缺錢,如果覺得文章對您有幫助,請掃描下邊的二維碼打賞作者,金額隨意,您的支持將是我繼續創作的源動力,打賞后如有任何疑問,請聯系我!!!
微信打賞
支付寶打賞 全國軟體測驗交流QQ群
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/507220.html
標籤:其他
