🔥Jmeter(二十五) - 從入門到精通 - JMeter 函式 - 下篇(詳解教程)

北京-宏哥發表於2025-03-12

1.簡介

  在效能測試中為了真實模擬使用者請求,往往我們需要讓提交的表單內容每次都發生變化,這個過程叫做引數化。JMeter 配置元件與前置處理器都能幫助我們進行引數化,但是都有侷限性,為了幫助我們能夠更好地進行引數化,JMeter 提供了一組函式來幫助我們引數化生成需要的資料,這些函式可以函式助手皮膚來進行編輯。當然函式助手的功能不僅僅是做引數化,還能幫助我們運算、字元編碼格式轉換、獲取執行時引數等功能。下面宏哥介紹和分享一下函式助手中的函式。

JMeter 提供了很多函式,如果能夠熟練使用,可以為指令碼帶來很多方便。可以很方便的實現一些小功能,幾乎可以用於測試計劃中的任何元件。

JMeter 函式是一種特殊值,可用於除測試計劃外的任何元件。

函式呼叫的格式如下所示:

${__functionName(var1,var2,var3)}

其中,“” 是兩個英文半形的下劃線,functionName 為函式名,括號內是函式的引數,無引數時可以不用括號,如 ${UUID},其中引數視不同函式而定。

Tips:

如果引數包含逗號,那麼一定要使用 “\” 來轉義,否則 JMeter 會把它當作一個引數分隔符

實際使用時,可透過函式助手對話方塊選擇函式,設定引數後,點選生成按鈕生成函式字串。 前兩篇主要介紹常用函式的主要函式,這一篇宏哥簡單的說一說其他有用的函式。

2.JMeter 中的常用函式中的其他函式

2.1__machineName

machineName 函式machineName 返回本機的主機名;

1、我們先來看看這個__machineName長得是啥樣子,路徑: 函式助手 > 選擇__machineName ,如下圖所示:

2、關鍵引數說明

Name of variable in which to store the result(optional) 為函式名稱名稱: 這裡我們設定為任意有意義的,即用於儲存在測試計劃中其他的方式使用的值

3、例項

${__machineName()}

宏哥計算機名字:

2.2__machineIP

__machineIP 返回電腦 IP。

1、我們先來看看這個__machineIP長得是啥樣子,路徑: 函式助手 > 選擇__machineIP ,如下圖所示:

2、關鍵引數說明

Name of variable in which to store the result(optional) 為函式名稱名稱: 這裡我們設定為任意有意義的,即用於儲存在測試計劃中其他的方式使用的值

3、例項

宏哥電腦的 IP:

2.3_base64Decode 和_base64Encode

base64Decode 用於解密,base64Encode 用於加密

1、我們先來看看這個__base64Decode \ __base64Encode長得是啥樣子,路徑: 函式助手 > 選擇__base64Decode \ __base64Encode ,如下圖所示:

__base64Decode

__base64Encode

2、關鍵引數說明

第一個引數:被加密/解密的字串

第二個引數:用於儲存的變數名,不必填

2.4__V

函式__V 可以用於執行變數名錶達式,並返回執行結果。它可以被用於執行巢狀函式引用(目前 JMeter 不支援)。

1、我們先來看看這個__V長得是啥樣子,路徑: 函式助手 > 選擇__V ,如下圖所示:

2、關鍵引數說明

Name of variable (may include variable and function references): 變數名錶達式

3、例如,如果存在變數 A1、A2 和 N=1,則:

${A1}:能正常工作。

${A${N}}:無法正常工作(巢狀變數引用)。

${__V(A${N})}:可以正常工作。A${N}變為 A1,函式 __V 返回變數值 A1。

2.5__evalVar

函式__evalVar 可以用來執行儲存在變數中的表示式,並返回執行結果。

如此一來,使用者可以從檔案中讀取一行字串,並處理字串中引用的變數。

1、我們先來看看這個__evalVar長得是啥樣子,路徑: 函式助手 > 選擇__evalVar ,如下圖所示:

3、例如,假設變數"query"中包含有"select ${column} from ${table}",而 "column"和"table"中分別包含有"name"和"customers",那麼 ${__evalVar(query)}將會執行"select name from customers"。

2.6__eval

函式__eval 可以用來執行一個字串表示式,並返回執行結果。

如此一來,使用者就可以對字串(儲存在變數中)中的變數和函式引用做出修改。

1、我們先來看看這個__eval長得是啥樣子,路徑: 函式助手 > 選擇__eval ,如下圖所示:

2、關鍵引數說明

Text containing variable and function references: 包含變數和函式引用文字

3、例如,給定變數 name=Smith、column=age、table=birthdays、SQL=select ${column} from ${table} where name='${name}',那麼透過 ${__eval(${SQL})},就能執行"select age from birthdays where name='Smith'"。這樣一來,就可以與 CSV 資料集相互配合,例如,將 SQL 語句和值都定義在資料檔案中。

2.7__escapeHtml

函式__escapeHtml 用於跳脫字元串中的字元(使用 HTML 實體)。支援 HTML 4.0 實體。幫我們把字元轉換成 HTML 格式的字元,比如引號轉換成 HTML 就是",比如空格就是 ,這樣編碼傳給瀏覽器,瀏覽器就能識別引號和空格了。

1、我們先來看看這個__escapeHtml長得是啥樣子,路徑: 函式助手 > 選擇__escapeHtml ,如下圖所示:

2、關鍵引數說明

String to escape :待轉義的字串;

3、例項

(1)使用函式助手,生成我們要呼叫函式的表示式,要轉換 “ ** 中國 ”,** 如下圖所示:

(2)建立測試計劃開始呼叫函式,我們轉換了 “中國”,如下圖所示:

(3)儲存測試計劃,點選執行 Jmeter,檢視結果,如下圖所示:

2.8__unescapeHtml

函式__unescapeHtml 用於反轉義一個包含 HTML 實體的字串,將其變為包含實際 Unicode 字元的字串。支援 HTML 4.0 實體。

如果函式不認識某個實體,就會將實體保留下來,並一字不差地插入結果字串中。例如,">&zzzz;x"會變為">&zzzz;x"。

1、我們先來看看這個_unescapeHtml長得是啥樣子,路徑: 函式助手 > 選擇_unescapeHtml ,如下圖所示:

2、關鍵引數說明:

String to unescape :待反跳脫字元串

3、例項

(1)使用函式助手,生成我們要呼叫函式的表示式,要轉換 "中國" 如下圖所示:

(2)建立測試計劃開始呼叫函式,我們轉換了 "中國" ,如下圖所示:

(3)儲存測試計劃,點選執行 Jmeter,檢視結果,如下圖所示:

3.小結

好了,今天到這裡 JMeter5 的函式下篇就介紹和分享完了,到此函式介紹就全部結束,就要告一段落了感謝您耐心的閱讀和一路支援宏哥!!!

相關文章