JMeter函數
JMeter函數和用戶變量
JMeter 函數是可以填充任何採樣器或其他元素在測試樹字段的特殊值。一個函數調用看起來像這樣:
${__functionName(var1,var2,var3)}
_functionName 函數的名稱相匹配。例如 ${__threadNum}.
如果一個函數參數包含一個逗號,然後轉義「」,如下圖所示。
${__time(EEE, d MMM yyyy)}
引用變量:
${VARIABLE}
函數列表
下表列出了一組函數類型大致分爲:
函數類型
名稱
註釋
Information
threadNum
get thread number
Information
samplerName
get the sampler name (label)
Information
machineIP
get the local machine IP address
Information
machineName
get the local machine name
Information
time
return current time in various formats
Information
log
log (or display) a message (and return the value)
Information
logn
log (or display) a message (empty return value)
Input
StringFromFile
read a line from a file
Input
FileToString
read an entire file
Input
CSVRead
read from CSV delimited file
Input
XPath
Use an XPath expression to read from a file
Calculation
counter
generate an incrementing number
Calculation
intSum
add int numbers
Calculation
longSum
add long numbers
Calculation
Random
generate a random number
Calculation
RandomString
generate a random string
Calculation
UUID
generate a random type 4 UUID
Scripting
BeanShell
run a BeanShell script
Scripting
javaScript
process JavaScript (Mozilla Rhino)
Scripting
jexl, jexl2
evaluate a Commons Jexl expression
Properties
property
read a property
Properties
P
read a property (shorthand method)
Properties
setProperty
set a JMeter property
Variables
split
Split a string into variables
Variables
V
evaluate a variable name
Variables
eval
evaluate a variable expression
Variables
evalVar
evaluate an expression stored in a variable
String
regexFunction
parse previous response using a regular expression
String
escapeOroRegexpChars
quote meta chars used by ORO regular expression
String
char
generate Unicode char values from a list of numbers
String
unescape
Process strings containing Java escapes (e.g. & )
String
unescapeHtml
Decode HTML-encoded strings
String
escapeHtml
Encode strings using HTML encoding
String
TestPlanName
Return name of current test plan
有兩種類型的函數:
用戶定義的靜態值(或變量)
內置函數
用戶定義的靜態值允許用戶定義變量時被替換爲靜態的值測試樹編譯並提交運行。
需要注意的是,變量目前無法嵌套,即${Var${N}}不起作用。
__ V(變量)函數(版本2.2後)可用於執行此操作: ${__V(Var${N})}.
這種類型的替換可能沒有函數,但更方便,更直觀
函數和變量可以在哪裏使用?
函數和變量可以被寫入到任何領域的任何測試部件。
下面的函數測試計劃應確定工作:
intSum
longSum
machineName
BeanShell
javaScript
jexl
random
time
property functions
log functions
測試計劃使用的功能有一些限制。JMeter的線程變量沒有被完全成立處理功能時,不會設置變量名作爲參數傳遞,將無法正常工作和變量引用,所以split() 和 regex() 變量賦值函數不會工作。 threadNum() 函數將不能工作(沒有任何意義在測試計劃級別)。
引用變量及函數
引用的變量中的測試元件是通過包圍在變量名 '${' and '}'.
函數中引用同樣的方式,但按照慣例,函數的名稱以「__」開頭,以避免衝突與用戶值的名稱。
有些函數帶參數的配置,而這些括號中,逗號分隔。如果函數沒有參數,括號可以省略。對於例如:
${__BeanShell(vars.put("name","value"))}
另外,可以定義你的腳本作爲一個變量,例如測試計劃:
SCRIPT vars.put("name","value")
然後,該腳本可以被引用如下:
${__BeanShell(${SCRIPT})}
函數輔助對話框
JMeter 選項「tab「可從函數助手對話框。
使用函數助手,可以選擇一個函數從拉下來,並指派其參數值。左邊的表中的列的參數,簡要說明和右列是你寫在該參數的值。不同函數的不同參數。
一旦這樣做了,點擊「生成」按鈕,併產生相應的字符串複製粘貼到測試計劃。
預定義變量
JMeter 內部定義的一些變量。它們分別是:
COOKIE_cookiename - 包含cookie的值
JMeterThread.last_sample_ok - 與否的最後一個樣本是確定的 - true/false。注:這是更新後的後處理和斷言已經運行。
START 變量
預先定義的特性
一些內置的的屬性定義JMeter。下面列出了這些。爲方便起見,啓動的屬性也被複制到具有相同名稱的變量。
START.MS - JMeter 啓動時間(毫秒)
START.YMD - JMeter 啓動時間爲 yyyyMMdd
START.HMS - JMeter 啓動時間爲 HHmmss
TESTSTART.MS - 測試開始時間(毫秒)
請注意,開始變量/屬性代表 JMeter 的啓動時間,而不是測試開始時間。它們主要適用於使用文件名等。