JMeter是一個功能強大的負載測試工具,它提供了許多有用的內置變量來支持測試過程。其中最常用的變量是 vars 和 props。
vars 變量
vars 變量是線程本地變量,它們只能在同一線程組內的所有線程中使用(線程組內不同線程之間變量不共享)。每個線程都有自己的一組 vars 變量。vars 變量可以通過如下方式設置和訪問:
在非 beanshell 環境里面可以使用?${varName}
?語法訪問變量的值。
訪問變量
在 beanshell 環境里面可以使用?vars.get("varName")
?語法訪問變量的值,vars.put("varName", "value")
?語法設置變量的值。
設置變量
在 JMeter 中,vars 變量通常用于在測試執行期間動態生成值,如從響應中提取數據并將其存儲在變量中以供后續請求使用。
props 變量
props 變量是全局變量,它們可以在任何線程組中使用。所有線程共享同一組 props 變量。props 變量可以通過如下方式設置和訪問:
在非 beanshell 環境里面可以使用${__P(propName)}
?語法訪問變量的值。
訪問變量
在 beanshell 環境里面可以使用?props.get("propName")
?語法訪問變量的值,?props.put("propName", "value")
?語法設置變量的值。
設置變量
在 JMeter 中,props 變量通常用于在測試執行期間傳遞數據,如測試參數,即使在不同的線程組之間也可以使用。
區別
vars 只能在當前線程組內使用(線程組內不同線程之間變量不共享),props 可以跨線程組使用 vars 只能保持String 或者Object, props 是 Hashtable 對象
vars:
1、本質是Map,是單個線程的本地屬性,能在beanshell里面進行賦值和取值
2、示例
vars.get("saleOrderCode"); // 讀取字符串變量saleOrderCode
vars.put("manufacturingOrderCode",vars.get("saleOrderCode").replace('S','M')); //賦值變量manufacturingOrderCode
3、如果要在非beanshell里面進行取值可以使用${變量名}。注意:此時Http Request和BeanShell Sampler在同一個線程組內
props:
1、本質是Map,是jmeter全局變量(也即屬性)的引用,能在beanshell里面進行賦值和取值
2、示例
props.put("ssoToken",${ssoToken}); //將Json提取器中的ssoToken,設置為全局變量,方便其他線程使用
?3、如果要在非beanshell里面進行取值可以使用jmeter內置函數:${__property(變量名)}
注意:${__property()}函數中,變量名不需要加引號
如:${__property(usernameProp)}
。注意:此時Http Request和BeanShell Sampler在可以在不同線程組
?4、也可以使用
${__BeanShell(props.get(“變量名”),)}
注意:${__BeanShell()}函數是創建了一個小型的java環境,可以直接執行一些簡單的表達式
如:${__BeanShell(props.get("usernameProp"),)}