1.前言
對于性能測試場景中,需要用”執行某個事物,直到一個條件停止“的概念時,While控制器控制器無疑是首選,但是在編寫腳本時,經常會出現推出循環異常,獲取參數異常等問題,下面總結兩種常用的寫法
2.${flag}直接引用判斷
1.在預處理器中定義一個flag?
或者在用戶定義的變量中定義
def flag = true
vars.putObject("flag",flag)
log.error("JSR223 預處理程序 flag: " + flag )
2.創建While控制器
?
3.使用示例觸發退出循環
使用”計數器“來實現每次迭代?num_ber+1
在 num_ber > 9 時,將 flag 置為 false
log.info("Elapsed Time1: ms:" + vars.getObject("flag"))
int num_ber = (vars.getObject("test_num")).toInteger()
if (num_ber > 9){vars.putObject("flag", false)}log.info("Elapsed Time1: ms:" + vars.getObject("flag") + " num " + num_ber)
4. 運行示例
在num_ber = 10時,while循環結束
3.使用函數判斷條件
這里推薦使用 ${__groovy(,)} 來作為函數載體
首先groovy語法與JSR223 中一致,便于理解和學習
其次在很多資料中顯示
- ${__jexl3(${C}==10)}?
- ${__javaScript(${C}==10)}?
這兩種寫法存在兼容性bug,經常導致判斷失敗或異常報錯
使用groovy:
${__groovy(vars.getObject("flag1") < 10,)}
${__groovy("vars.get("flag1")" < "10",)}
1.同上,使用預處理器,定義flag
int flag1 = 0
vars.putObject("flag1",flag1)
log.error("JSR223 預處理程序 flag1: " + flag1 )
2.設置while
3.設置退出條件
log.info("Elapsed Time1: ms:" + vars.getObject("flag1"))
int num = (vars.getObject("test_num")).toInteger()vars.putObject("flag1",num)
log.info("Elapsed Time1: ms:" + vars.getObject("flag1") + " num " + num)
4.結果展示
在num_ber = 10時,while循環結束