參考文章:
【Jmeter】元件詳解:函數(shù)助手 - [顧三殤]
https://blog.csdn.net/qq_39720249/article/details/88790042
jmeter官方文檔
https://jmeter.apache.org/usermanual/functions.html#__log
BeanShell
對表達式求值并存儲變量
${__BeanShell(1+1,var)}
輸入:1+1
輸出:var = 2
changeCase
對字符串進行格式化(UPPER(默認),LOWER,CAPITALIZE)
${__changeCase(aaaaa,CAPITALIZE,)}
輸入:aaaaa
輸出:Aaaaa
char
對Unicode 字符數(shù)(十進制或0xhex) 進行轉(zhuǎn)換
${__char(69)}
輸入:69
輸出:E
counter
計數(shù)器,每次被調(diào)用都會產(chǎn)生一個新的數(shù)字,從1開始,每次加1
${__counter(,)}
輸入:
輸出:1
CSRead
讀取外部文件指定列的參數(shù)
${__CSVRead(D:\JmeterData\he.txt,2)}
輸入:1,2,3
輸出:3
dateTimeConvert
格式化時間
${__dateTimeConvert(1620457371995,,yyyy-MM-dd HH:mm:ss,)}
輸入:1620457371995
輸出:2021-05-08 15:02:51
digest
返回指定哈希算法中的摘要值。(加密)
${__digest(MD5,Errare humanum est,,true,)}
輸入:Errare humanum est
輸出:C49F00B92667A35C63708933384DAD52
參數(shù)介紹:
摘要算法:MD2、MD5、SHA-1、SHA-224、SHA-256、SHA-384、SHA-512
String to be hashed:要計算的字符串;
Salt to be used for hashing (optional):用于計算散列的鹽(可選項);
Upper case result, defaults to false (optional):結(jié)果大寫,默認為false(可選),即默認摘要值為小寫
存儲結(jié)果的變量名(可選)
escapeHtml
把字符轉(zhuǎn)換成 Html 格式的字符
${__escapeHtml("")}
輸入:“”
輸出:""
escapeOroRegexpChars
把一些 Java 正則表達式引擎不識別的正則式轉(zhuǎn)換一下,這樣就可以識別了;
${__escapeOroRegexpChars([^"].+?,)}
輸入:[^"].+?,
輸出:\[\^\"\]\.\+\?\,
escapeXml
字符串轉(zhuǎn)義
${__escapeXml("bread" & 'butter')}
輸入:"bread" & 'butter'
輸出:"bread" & 'butter'
eval
函數(shù) __eval 可以用來執(zhí)行一個字符串表達式,并返回執(zhí)行結(jié)果。(該函數(shù)里面可以執(zhí)行表達式)
${__eval({sql})}
例如:
name = Smith
column = age
table = birthdays
SQL = select columnfrom{table} where name = '${name}'
輸出: select age from birthdays where name='Smith'
evalVar
用來執(zhí)行保存在變量中的表達式,并返回執(zhí)行結(jié)果,并把結(jié)果存入一個變量,供 Sampler 引用。
${__evalVar()}
輸入:
輸出:
FileToString
FileToString函數(shù)可用于讀取整個文件。每次調(diào)用它時,它都會讀取整個文件。
如果打開或讀取文件時發(fā)生錯誤,則函數(shù)返回字符串"ERR"
${__FileToString(D:\JmeterData\he.txt,utf-8,)}
輸入:D:\JmeterData\he.txt
輸出:1,2,3
groovy
執(zhí)行g(shù)roovy腳本
${__groovy("myVar".substring(0\,2))}
輸入:"myVar".substring(0\,2)
輸出:my
intSum
參數(shù)(整數(shù))求和
${__intSum(1,2,)}
輸入:1,2
輸出:3
isPropDefined
如果property存在則返回true,否則返回false。
${__isPropDefined(usercount)}
輸入:
輸出:false
isVarDefined
如果var存在則返回true,否則返回false。
${__isVarDefined(1)}
輸入:
輸出:false
javaScript
javaScript函數(shù)執(zhí)行一段javaScript(不是Java!)代碼并返回它的值
${__javaScript(new Date(),)}
輸入:new Date()
輸出:[Date 2021-05-08T08:02:37.258Z]
jexl2
jexl函數(shù)返回對Commons jexl表達式求值的結(jié)果
${__jexl2(1+1==3,)}
輸入:1+1==3
輸出:false
jexl3
jexl函數(shù)返回對Commons jexl表達式求值的結(jié)果
${__jexl3(1+1==3,)}
輸入:1+1==3
輸出:false
log
log函數(shù)記錄一條消息,并返回其輸入字符串(打印日志)
${__log(111,out,,)}
輸入:111
輸出:111
參數(shù)講解:
第 1 個參數(shù):要記錄(和返回)的字符串
第 2 個參數(shù):日志級別有 OUT,ERR,DEBUG,INFO (default) ,WARN or ERROR
OUT: 在控制臺打印出來 (點擊快捷菜單欄的 △0(帶感嘆號“!”的三角形) 按鈕,在 GUI 中打開控制臺),
另外也會打印到標準輸出窗口(在 Windows 下我們運行 JMeter 時會有一個標準輸出窗口)
第3/4個參數(shù)可選
logn
與 log 類似,不過它只記錄一條日志,不返回值而已
${__logn(哈哈,err,)}
輸入:
輸出:
longSum
與 __intSum 類同,只不過把整數(shù)變成了長整型
${__longSum(1,2,)}
輸入:1,2
輸出:3
machineIP
獲取設(shè)備IP
${__machineIP()}
輸入:
輸出:192.168.56.1
machineName
獲取設(shè)備名稱
${__machineName()}
輸入:
輸出:輸出電腦名稱
P
獲取設(shè)備名稱
${__P(,1)}
輸入:
輸出:
1、獲取屬性的函數(shù),可以獲取命令行中定義的屬性,默認值為 1 。
// 例如:我們在命令窗口打開 JMeter 且設(shè)置 group1.threads = 7 ,我們在打開的 JMeter GUI 中可以獲取到此參數(shù)。
// 在非 GUI 方式運行測試計劃時這個函數(shù)可用來做參數(shù)化,由運行命令動態(tài)指定參數(shù)值,
// 方便我們與 Jenkins 、Maven 或者 Ant 進行集成未完成性能測試自動化工作。
2、函數(shù) __P 是一個簡化版的屬性函數(shù),目的是使用在命令行中定義的屬性。
3、不同于函數(shù) __property ,本函數(shù)沒有提供選項用于設(shè)置保存屬性值的變量。
4、另外,如果沒有設(shè)置默認值,默認值自動設(shè)為 1 。
property
獲取properties文件中的屬性值
${__property(upgrade_properties,,)}
輸入:pgrade_properties
輸出:/bin/upgrade.properties
Random
生成控制范圍之間的隨機整數(shù)
${__Random(1,10,)}
輸入:
輸出:1-10隨機整數(shù)
RandomDate
生成給定的開始日期和結(jié)束日期之間的隨機日期(日期、不是時間)(可指定日期格式)
${__RandomDate(yyyy-MM-dd,2021-05-01,2021-05-20,,)}
輸入:2021-05-01 , 2021-05-20
輸出:2021-05-06
RandomFromMultipleVars
對給定的幾個var1,var2,var3變量進行一個隨機取值
${__RandomFromMultipleVars(var1,var2)}
輸入:var1,var2
輸出:var1或者var2
RandomString
隨機生成字符,可指定字符的長度和可進行隨機的字符串序列
${__RandomString(3,你好啊,我是小愛同學。,)}
輸入:
輸出:你好。
regexFunction
Regex函數(shù)用于使用任何正則表達式(由用戶提供)解析前面的響應(yīng)(或變量的值)。函數(shù)返回填充了變量值的模板字符串。
https://jmeter.apache.org/usermanual/functions.html#__regexFunction
${__regexFunction(,,,,,,)}
輸入:
輸出:
samplerName
獲取當前Sampler的名稱
${__samplerName(qq)}
輸入:
輸出:Sampler名稱
setProperty
動態(tài)設(shè)置jmeter變量
${__setProperty(qq,11,false)}
輸入:qq = 11
輸出:
split
分割字符串(指定字符串,存儲變量名稱,分隔符)
${__split(1\,2\,3,a,\,)}
輸入:1,2,3
輸出:1,2,3
a_1=1
a_3=3
a_2=2