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


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的函數下篇就介紹和分享完了,到此函數介紹就全部結束,就要告一段落了感謝您耐心的閱讀和一路支持宏哥!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM