- JMeter 教程
- JMeter - 首頁
- JMeter - 概述
- JMeter - 環境
- JMeter - 構建測試計劃
- JMeter - 測試計劃元素
- JMeter - Web 測試計劃
- JMeter - 資料庫測試計劃
- JMeter - FTP 測試計劃
- JMeter - Web 服務測試計劃
- JMeter - JMS 測試計劃
- JMeter - 監控測試計劃
- JMeter - 監聽器
- JMeter - 函式
- JMeter - 正則表示式
- JMeter - 最佳實踐
- JMeter 資源
- JMeter - 快速指南
- JMeter - 有用資源
- JMeter - 討論
JMeter - 函式
JMeter 函式和使用者變數
JMeter 函式是特殊的變數,可以填充測試樹中任何取樣器或其他元素的欄位。
函式呼叫如下所示:
${__functionName(var1,var2,var3)}
_functionName 匹配函式的名稱。例如 ${__threadNum}。
如果函式引數包含逗號,請確保使用 "\" 轉義,如下所示:
${__time(EEE\, d MMM yyyy)}
變數引用如下:
${VARIABLE}
函式列表
下表列出了一組鬆散地按型別分組的函式:
| 函式型別 | 名稱 | 註釋 |
|---|---|---|
| 資訊 | threadNum | 獲取執行緒號。 |
| 資訊 | samplerName | 獲取取樣器名稱(標籤)。 |
| 資訊 | machineIP | 獲取本地機器的IP地址。 |
| 資訊 | machineName | 獲取本地機器名稱。 |
| 資訊 | time | 以各種格式返回當前時間。 |
| 資訊 | log | 記錄(或顯示)訊息(並返回該值)。 |
| 資訊 | logn | 記錄(或顯示)訊息(空返回值)。 |
| 輸入 | StringFromFile | 從檔案中讀取一行。 |
| 輸入 | FileToString | 讀取整個檔案。 |
| 輸入 | CSVRead | 從 CSV 分隔符檔案中讀取。 |
| 輸入 | XPath | 使用 XPath 表示式從檔案中讀取。 |
| 計算 | counter | 生成遞增數字。 |
| 計算 | intSum | 新增整數。 |
| 計算 | longSum | 新增長整數。 |
| 計算 | Random | 生成隨機數。 |
| 計算 | RandomString | 生成隨機字串。 |
| 計算 | UUID | 生成隨機型別 4 UUID。 |
| 指令碼 | BeanShell | 執行 BeanShell 指令碼。 |
| 指令碼 | javaScript | 處理 JavaScript (Mozilla Rhino)。 |
| 指令碼 | jexl, jexl2 | 評估 Commons Jexl 表示式。 |
| 屬性 | property | 讀取屬性。 |
| 屬性 | P | 讀取屬性(簡寫方法)。 |
| 屬性 | setProperty | 設定 JMeter 屬性。 |
| 變數 | split | 將字串拆分為變數。 |
| 變數 | V | 評估變數名。 |
| 變數 | eval | 評估變量表達式。 |
| 變數 | evalVar | 評估儲存在變數中的表示式。 |
| 字串 | regexFunction | 使用正則表示式解析之前的響應。 |
| 字串 | escapeOroRegexpChars | 引用 ORO 正則表示式使用的元字元。 |
| 字串 | char | 根據數字列表生成 Unicode 字元值。 |
| 字串 | unescape | 處理包含 Java 轉義符的字串(例如 \n 和 \t)。 |
| 字串 | unescapeHtml | 解碼 HTML 編碼的字串。 |
| 字串 | escapeHtml | 使用 HTML 編碼對字串進行編碼。 |
| 字串 | TestPlanName | 返回當前測試計劃的名稱。 |
有兩種型別的函式:
使用者定義的靜態值(或變數)
內建函式
使用者定義的靜態值允許使用者定義變數,在編譯測試樹並提交執行時,這些變數將被其靜態值替換。
變數不能巢狀;即 ${Var${N}} 不起作用。
可以使用 __V (變數) 函式(2.2 版之後)來實現此目的:${__V(Var${N})}。
這種型別的替換無需函式即可實現,但不太方便且不太直觀。
函式和變數的用途
函式和變數可以寫入任何測試元件的任何欄位中。
以下函式在測試計劃中效果很好:
- intSum
- longSum
- machineName
- BeanShell
- javaScript
- jexl
- random
- time
- property 函式
- log 函式
在測試計劃中使用的函式有一些限制。當處理函式時,JMeter 執行緒變數尚未完全設定,因此作為引數傳遞的變數名將未設定,變數引用將不起作用。因此,split() 和 regex() 以及變數評估函式將不起作用。threadNum() 函式將不起作用,並且在測試計劃級別沒有意義。
引用變數和函式
在測試元素中引用變數是透過用 '${' 和 '}' 括起變數名來完成的。
函式的引用方式相同,但按照約定,函式的名稱以 "__" 開頭,以避免與使用者值名稱衝突。
某些函式需要引數來配置它們,這些引數以逗號分隔的形式放在括號中。如果函式不需要引數,則可以省略括號。例如:
${__BeanShell(vars.put("name"\,"value"))}
或者,您可以將指令碼定義為變數,例如在測試計劃中:
SCRIPT vars.put("name","value")
然後可以如下引用指令碼:
${__BeanShell(${SCRIPT})}
函式助手對話方塊
函式助手對話方塊可從 JMeter 的“選項”選項卡中獲得。
使用函式助手,您可以從下拉列表中選擇一個函式,併為其引數賦值。表中的左列提供了引數的簡要說明,右列是您為該引數編寫值的地方。不同的函式需要不同的引數。
完成此操作後,單擊“生成”按鈕,將生成相應的字串,您可以將其複製貼上到需要使用它的測試計劃中的任何位置。
預定義變數
JMeter 內部定義了一些變數。它們是:
COOKIE_cookiename - 包含 cookie 值。
JMeterThread.last_sample_ok - 上一個樣本是否成功 - true/false。注意 - 這是在執行後處理器和斷言後更新的。
START 變數。
預定義屬性
JMeter 定義了一些內建屬性。這些列在下面。為方便起見,START 屬性也被複制到具有相同名稱的變數中。
START.MS - JMeter 啟動時間(毫秒)。
START.YMD - JMeter 啟動時間(yyyyMMdd)。
START.HMS - JMeter 啟動時間(HHmmss)。
TESTSTART.MS - 測試啟動時間(毫秒)。
請注意,START 變數/屬性表示 JMeter 啟動時間,而不是測試啟動時間。它們主要用於檔名等。