jmete 學習 --函數助手
為了在性能過程中真實的模擬用戶請求,有時我們需要借助函數助手來進行參數化,本篇我就列出一些常用的 函數助手。
函數調用都是以 ${__function()} 這種形式開始的。
1.__BeanShell
名稱:無實際含義。
值:BeanShell語句或者BeanShell文件地址。
Detail:無實際含義。
生成:生產Sample 可以調用的表達式。
在java 請求中設置Label 為 ${__BeanShell("shanghai"+"road")},運行,察看結果樹,調用結果如下:
2.__char
功能是把一組數字轉化成Unicode字符,看演示結果(值是 65,66)
3.__counter
可以作為一個計數器使用,支持多線程。看下面例子。
我們借助 ${__threadNum} 來顯示當前運行線程的ID.設置兩個線程,叠代3次。
如果__counter 引用為 false,賊結果為
4.__CSVRead
該函數可以從文件中讀取指定列的值,有2個主要功能
1).讀取固定值
從 a.txt 文檔中讀取第一列的值(有幾行可以選擇幾個線程)
2).讀取動態值
如果想每次叠代時取值不一樣,可以用到類似 ${__CSVRead(D:\a.txt,next()) 這樣的表達式,next()會告知程序下次叠代去下一行數據,前面一個表達式表示第幾列。
5.__escapeHtml
把字符串轉換成HTML格式的字符
6.__eval
用來返回一個表達式的值,也就是可以用此函數數表達式來嵌套引用表達式。例子
name = Smith table = birthdays column = age SQL = SELECT ${column} from ${table} where name = ‘${name}‘
那麽久可以用 ${__eval(${SQL})} 來引用SQL 變量,得到的結果就是 select age from birthdays where name = ‘Smith‘
7. __evalVar
用來返回表達式的結果,並把結果存入一個變量,供Sampler引用。
1) 在用戶定義變量中 定義 username 變量,
2) 通過__eval 函數來定義
3) 在java 請求中通過__eval 函數來調用他
最終結果是
8.__FileToString
用來讀取文件,它可以一次性讀取文件內容,然後保存到變量;此變量可由其他Sampler 引用。
見示例
在java請求中的 Label 調用該變量,結果為
9.__intSum
用來對整數求和,支持多個整數累加,多個數之間用逗號分隔。見實例,求,1~5之後,然後java 請求中labael 調用
10.__longSum
與__intSum 類同,只不過把整數變成了長整型。
11.__javaScript
此函數可以用來返回 JavaScript 腳本執行的結果。也可以用來調用JavaScript中的函數庫,見實例
12.__log
日誌方法,返回輸入的字符串信息。
String to be logged(and returned):將會被日誌輸出的字符串
Log level (default INFO) or OUT or Err:指定輸出日誌級別,以下是日誌級別:
OUT:在控制臺打印出來,另外也會打印到標準輸出窗口。
ERR:在控制臺輸出日誌信息,同事也打印到標準輸出。類似JAVA 的 System.err。
DEBUG:在控制臺輸出日誌信息,DEBUG 級別以上的都能打印。
INFO:類似DEBUG,打印INFO 和ERROR 級別的日誌。
WARN:打印INFO 和ERROR ,WARN級別的日誌。
ERROR:僅打印ERROR 日誌。
Throwable text:拋出的異常信息。
Additional comment:附加的備註信息。
13.__machineIP
返回本機IP,簡單,不作實例。
14.__machineName
返回本機的機器名,簡單,不作實例。
15.__P
獲取屬性的函數,可以獲取命令行中定義的屬性,默認值為1.比如我們在命令窗口打開JMETER,且設置 group1.threads = 7,那麽我們可以通過__P 函數來獲取
16.__Random
隨機函數,用此函數來生成一個一定範圍內的隨機數並保存到指定變量,可供其他Sampler使用。
17.__RandomString
隨機字符串函數,用此函數我已生成指定長度的隨機字符串並保存到指定變量,可供其他Sampler使用。
18.__regexFunction
正則表達式提取函數,此函數用來正則匹配上一個Sampler的返回值,關於正則表達式,以後會專門寫一篇來解釋。
19.__samplerName
獲取當前Sampler的名稱,不做演示了。
20.__setPROPERTY
此函數用來動態設置JMeter 的屬性。
Return Original Value of property:是否返回函數結果,默認為否,如果為Ture ,則 java 請求中lable 調用此函數該值就為Debug了。
21.__split
該函數用來拆分字符串。
函數名稱:拆分的字符串引用的變量名。拆分後的字符存入變量中,此變量類似一個字符串數組。如上面例子的para。用 para_1 來表示 拆分後的第一個字符,如果沒有匹配到則用?表示。
22.__StringFromFile
該函數從文件中讀取內容,一行一行的讀,類似於CSV Data Set Config 元件, 效率不高,不推薦,故不做演示。
23.__TestPlanName
返回測試計劃名稱
24.__threadNum
返回當前線程號
25.__time
返回當前時間,可以指定格式。
年:yyyy
月:MM (註意是大寫)
日:dd
時:hh
分:mm
秒:ss
26.__unescape
返轉escape字符,如 \r\n 轉成 CRLF.
27.__unescapeHtml
返轉URL 鏈接中的Unicode編碼字符,如 轉成空格。
28.__UUID
生成一個唯一的字符串。
jmete 學習 --函數助手