meter 的 JSR223 控件是 代替 BeanShell 的新一代腳本控件,支持多種腳本語言,尤其是其中的 Groovy,更是重點推薦使用的腳本語言,本文研究其中的 vars 和 props 兩種對象的用法。
目錄
本文使用的 Jmeter 是 4.0 版本
二者的區別
props 和 vars 主要有兩點區別:
vars 只能在當前線程內使用,props 可以跨線程組使用
vars 只能保存 String 或者 Object,props 是 Hashtable 對象
vars
vars 中的變量僅對當前線程組內可見,跨線程組則需要使用屬性。
保存字符串變量
讀取變量值使用 vars.put(var, value)
函數,例如
vars.put("IS_OPEN", "true");
注意,上面的 "NEW_VALUE"
必須是字符串類型,傳遞其他類型,包括 null,都會導致報錯。如果想使用數字、數組等類型,一種方法是做類型轉換:
vars.put("MUST_BE_STRING", "" + 1); vars.put("MUST_BE_STRING", (String)1); vars.put("MUST_BE_STRING", [2, 3, 4].toString()); vars.put("MUST_BE_STRING", (String)[1,2]); vars.put("MUST_BE_STRING", "" + [2, 3, 4]); vars.put("MUST_BE_STRING", "" + true); vars.put("MUST_BE_STRING", true.toString());
另一種方法是使用 對象存儲方法 。
讀取字符串變量
vars.get()
方法用於讀取變量值:
vars.get("IS_OPEN");
如果傳遞的 "VARIABLE_NAME"
預先不存在,將返回 null
.
保存對象
vars保存對象類型 (包括 List、Map、Closure 之類),使用如下方法:
vars.putObject("OBJECT_NAME", Object);
比如
vars.putObject("NUMBER", 1); vars.putObject("ARRAY", []); vars.putObject("CLOSURE", { x, y -> x+y });
讀取對象
vars 讀取對象類型,使用如下方法:
vars.getObject("OBJECT_NAME");
props
props 繼承了 Hashtable 的類,所以擁有與 vars 類似的 get 和 put 方法,另外還繼承了 Hashtable 的其他方法 :
判斷某項屬性是否存在,返回布爾值
props.containsKey("PROPERTY_NAME")
判斷某項值是否存在,返回布爾值
props.contains("PROPERTY_VALUE")
刪除某個值
props.remove("PROPERTY_NAME")
所有屬性以字符串形式表示
props.toString()