標簽(空格分隔): Jmeter
在性能呢測試過程中為了真實的模擬用戶,往往我們需要讓提交的表單內容每次都發生變化,這個過程加參數化,Jmeter配置原件與前置處理器都能幫助我們進行參數化,單都有局限性,為了幫助我們進行參數化,Jmeter提供了一組函數來幫助我們生成需要的數據,這些函數助手面板來進行編輯,當然函數助手的功能不僅僅是進行參數化,還可以幫我們進行圓形,字符編碼,格式轉化,獲取運行時參數的功能。 函數都是以${__function()}
這種形式開始的,其中“__”是英文的半角下橫線,function是函數名,其中參數是不同的函數而定
函數列表
JMeter總計七大類型的函數類型如下:
信息類: 用於讀取線程、請求名等 輸入類: 用於讀取文件等 計算類: 用於計數、求和等 腳本類: 用於運行各類腳本,例如groovy、beanshell等等 屬性類: 讀取或設置jmeter配置 變量類: 用於對變量進行操作 字符串類: 用於字符串處理
信息類
主要用於獲取一些常用的基本信息或是日志輸出控制。 |編號|函數名|描述| |--| |1|__threadnum|函數線程數| |2|__samplerName|說起當前請求的名稱| |3|__machineIP|獲取本機的IP地址| |4|__machineNmae|獲取本機的名稱| |5|__time|返回指定格式的時間| |6|__log|日志輸出,並返回它的輸入字符串| |7|__logn|日志輸出,並返回空的字符串|
###輸入類 |編號|函數名|描述| |--| |1|__StringFromFile|函數線程數| |2|__FileToString|獲取當前請求的名稱| |3|__CSVRead|讀取csv格式文件數據| |4|__XPath|使用xpath讀取xml文件中的數據|
計算類
主要用於從外部文件讀取數據,進行參數化或是說關聯 |編號|函數名|描述| |--| |1|__counter|生成一個自增數| |2|__intSum|整數求和| |3|__logSum|長整數求和| |4|__Random|生成隨機數| |5|__RandomFromMultipleVars|從一組數據中提取一個數據| |6|__RandomStrgin|生成隨機字符串| |7|__UUID|生成隨機的唯一的UUID|
腳本本類
主要用於調用外部腳本或是解析執行腳本
|編號|函數名|描述| |--| |1|__groovy|執行groovy腳本| |2|__BeanShell|執行BeanShell腳本| |3|__javaScript|執行javaScript的腳本| |4|__jexl2|執行jexl2表達式| |5|__jexl3|執行jexl3表達式|
屬性類
用於讀取和設置jmeter配置 |編號|函數名|描述| |--| |1|__property|讀取屬性值| |2|__P|讀取屬性值(__property)的簡寫| |3|__setProperty|設置屬性值|
###變量類 主要用於驗證變量表達式引用是否正確 |編號|函數名|描述| |--| |1|__sqlit|拆分字符串| |2|__V|執行變量名表da's達式的返回結果| |3|__eval|執行字符串表達式,並返回結果| |4|__evalVar|執行保存在變量中的表達式,並返回結果|
字符串類
用於字符串操作
|編號|函數名|描述| |--| |1|__regexFunction|使用正則表達式| |2|__escapeOroRegexpChars|用於轉義正則表達式中的字符| |3|__char|將一串數字轉換成成unciode的字符| |4|__unescape|用於反轉義java-escape字符串| |5|__unescapeHtml|解碼html-encode字符串| |6|__escapeHtml|使用html coding編碼目標字符串| |7|__escapeXml|使用XML codingbiao'ma編碼目標字符串| |8|__urldecode|解碼urlcode| |9|__urlencode| 編碼為urlcode| |10|__TestPlanName|獲取當前測試計划|
##常用函數的介紹
__time 函數
獲取系統的當前時間
函數參數 | 描述 |
---|---|
Format string for SimpleDateFormat (optional)格式 | 設置時間所采用的格式 |
Name of variable in which to store the result (optional)變量名 | 存儲結果的變量名稱 |
如果省略了格式字符串,time函數會返回當前時間的毫秒級時間戳。 time函數包含以下時間格式
- YMD = yyyyMMdd。
- HMS = HHmmss。
- YMDHMS = yyyyMMdd-HHmmss。
- 也可以加入字符修改樣式
- 用戶可以通過修改JMeter屬性來改變默認格式,例如,time.YMD=yyMMdd。
time毫秒時間戳轉秒時間戳
__Random 函數
生成隨機數
函數參數 | 描述 |
---|---|
FThe minimum value allowed for a range of value | 隨機數取值范圍的最小值 |
The maximum value allowed for a range of values | 取值范圍的最大值 |
Name of variable in which to store the result (optional) | 存儲結果的變量名稱 |
- 在1000-10000之間生成隨機數
__RandomString
隨機生成字符串
函數參數 | 描述 |
---|---|
Random string length | 隨機字符串的長度 |
Chars to use for random string generation | 用來生成隨機字符串的字符 |
Name of variable in which to store the result (optional) | 存儲結果的變量名稱 |
__RandomDate
隨機生成日期
函數參數 | 描述 |
---|---|
Format string for DateTimeFormatter (optional) (default yyyy-MM-dd) | 日期格式 默認yyyy-mm-dd |
Start date (optional) (default: now) | 隨機日期的開始日期,默認為現在 |
End date | 結束日期 |
String format of a locale (ex: fr_FR , en_EN) (optional) | 語言區域 |
Name of variable in which to store the result (optional) | 存儲結果的變量名稱 |
__threadNum
返回當前線程的編號
__log
記錄一條日志,並返回輸入的字符串
函數參數 | 描述 |
---|---|
String to be logged (and returned) | 日志信息 |
Log level (default INFO) or OUT or ERR | 日志等級。OUT會在控制台輸出,ERR、INFO、DEBUG在日志文件內輸出 |
Throwable text (optional) | 可拋棄的文本,如果非空,會創建一個可拋棄的文本傳遞給記錄器 |
Additional comment (optional) | 注釋如果存在,注釋會在字符串中展示,用於標識日志記錄了什么 |
__jexl3
函數_jexl可以用於執行通用JEXL表達式,並返回執行結果。
函數參數 | 描述 |
---|---|
JEXL expression to evaluate | 待執行的表達式 |
Name of variable in which to store the result (optional) | 存儲結果的變量名稱 |
如下變量可以通過腳本進行訪問。
log:函數記錄器。
ctx:JMeterContext對象。
vars:JMeterVariables對象。
props:JMeter屬性對象。
threadName:字符串包含當前線程名稱 (在2.3.2 版本中它被誤寫為"theadName")。
sampler:當前的采樣器對象(如果存在)。
sampleResult:前面的采樣結果對象(如果存在)。
OUT - System.out,例如 OUT.println("message")。 是你用vars的例子參考 Sampler 章節的jdbc-request