JMeter函數(shù)和用戶變量
JMeter函數(shù)是可以填充測試樹中任何Sampler或其他元素的字段的特殊值.
函數(shù)調(diào)用如下所示;
${__functionName(var1,var2,var3)}
_functionName 匹配函數(shù)的名稱.例如 $ {__ threadNum} .
如果函數(shù)參數(shù)包含逗號,請確保使用""對此進行轉(zhuǎn)義"如下圖所示 :
${__time(EEE\, d MMM yyyy)}
變量被引用為 :
${VARIABLE}
功能列表
下表列出了一組松散地分為類型和減號的函數(shù);
函數(shù)類型 |
名稱 |
評論 |
---|---|---|
信息 |
threadNum |
獲取線程編號 |
信息 |
samplerName |
獲取采樣器名稱(標簽) |
信息 |
machineIP |
獲取本地計算機IP地址 |
信息 |
machineName |
獲取本地機器名 |
信息 |
時間 |
以各種格式返回當前時間 |
信息 |
log |
記錄(或顯示)一條消息(并返回該值) |
信息 |
logn |
記錄(或顯示)消息(空返回值) |
輸入 |
StringFromFile |
從文件中讀取一行 |
輸入 |
FileToString |
讀取整個文件 |
輸入 |
CSVRead從CSV |
分隔文件中讀取 |
輸入 |
XPath |
使用從文件中讀取的XPath表達式 |
計算 |
計數(shù)器 |
生成一個遞增的數(shù)字 |
計算 |
intSum |
添加數(shù)字 |
計算 |
longSum |
添加長號 |
計算 |
隨機 |
生成一個隨機數(shù) |
計算 |
RandomString |
生成隨機字符串 |
計算 |
UUID |
生成隨機類型4 UUID |
腳本 |
BeanShell |
運行BeanShell腳本 |
腳本 |
javaScript |
處理JavaScript(Mozilla Rhino) |
腳本 |
jexl,jexl2 |
評估Commons Jexl表達式 |
屬性 |
property |
讀取房產(chǎn) |
房產(chǎn) |
P |
讀取屬性(速記方法) |
屬性 |
setProperty |
設置JMeter屬性 |
變量 |
split |
將字符串拆分為變量 |
變量 |
V |
評估變量名稱 |
變量 |
eval |
評估變量表達式 |
變量 |
evalVar |
評估存儲在變量中的表達式 |
String |
regexFunction |
Parse使用正則表達式的先前響應 |
String |
e scapeOroRegexpChars |
引用ORO正則表達式使用的元字符 |
String |
char |
從數(shù)字列表中生成Unicode字符值 |
String |
unescape |
包含Java轉(zhuǎn)義的進程字符串(例如\ n& \ t) |
String |
unescapeHtml |
解碼HTML編碼的字符串 |
String |
escapeHtml |
使用HTML編碼對字符串進行編碼 |
String |
TestPlanName |
返回當前測試計劃的名稱 |
有兩種功能 :
• 用戶定義的靜態(tài)值(或變量)
• 內(nèi)置函數(shù)
用戶定義的靜態(tài)值允許用戶在編譯測試樹并提交運行時定義要用其靜態(tài)值替換的變量;
變量不能嵌套;即 $ {Var $ {N}} 不起作用;
__V(變量)函數(shù)(2.2之后的版本)可以用來做這個 : 去; $ {__ V(無功$ {N})};
這種類型的替換可以在沒有功能的情況下進行,但不太方便且不太直觀。
函數(shù)和變量可以寫入任何測試組件的任何字段。
以下函數(shù)應該在測試計劃中正常工作 :
• intSum
• longSum
• machineName
• BeanShell
• javaScript
• jexl
• random
• time
• 屬性函數(shù)
• 日志函數(shù)
測試計劃中使用的函數(shù)有一些限制.處理函數(shù)時,JMeter線程變量尚未完全設置,因此不會設置作為參數(shù)傳遞的變量名稱,并且變量引用將不起作用.因此, split()和 regex()并且變量評估函數(shù)將不起作用. threadNum()函數(shù)不起作用,在測試計劃級別沒有意義。
在測試元素中引用變量是通過將變量名稱括在'$ {'和'}'來完成的;
函數(shù)以相同的方式引用,但按照慣例,函數(shù)名稱以"__"開頭,以避免與用戶值名沖突。
有些函數(shù)會使用參數(shù)來配置它們,這些函數(shù)用括號括起來,用逗號分隔.如果函數(shù)不帶參數(shù),則可以省略括號.例如 :
${__ BeanShell(vars.put("name"\ ,"value"))}
或者,您可以將腳本定義為變量,例如關于測試計劃 :
SCRIPT vars.put("name","value" ")
然后可以引用腳本如下 :
${__ BeanShell($ {SCRIPT})}
函數(shù)幫助程序?qū)υ捒?/span>
可以從JMeter的選項選項卡中找到函數(shù)幫助程序?qū)υ捒颍?/p>
使用函數(shù)幫助器,您可以從下拉列表中選擇一個函數(shù),并為其參數(shù)賦值.表中的左列提供了參數(shù)的簡要說明,右列是您為該參數(shù)寫入值的位置.不同的函數(shù)有不同的參數(shù);
完成后,單擊"生成"按鈕,生成相應的字符串,您可以復制粘貼在任何需要的地方進入測試計劃。
些變量是由JMeter在內(nèi)部定義.它們是 :
COOKIE_cookiename : 包含cookie值。
JMeterThread.last_sample_ok : 最后一個樣本是否為OK : true/false.注意 : 這在PostProcessors和Assertions運行后更新。
START變量。
一些內(nèi)置屬性由JMeter定義.下面列出了這些屬性.為方便起見,START屬性也被復制到具有相同名稱的變量。
• START.MS : JMeter開始時間(以毫秒為單位)
• START.YMD : JMeter的開始時間為yyyyMMdd.
• START.HMS : JMeter的開始時間為HHmmss.
• TESTSTART.MS : 測試開始時間(以毫秒為單位).
請注意,START變量/屬性表示JMeter啟動時間,而不是測試開始時間.它們主要用于文件名等。