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