真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

jmeter學習指南之常用函數(shù)的使用

說明:本文內容是基于jmeter3.0版本來編寫,不同版本可能會有個別部分不一致,但是不會差別太大的。

10年積累的網(wǎng)站設計制作、成都做網(wǎng)站經驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先建設網(wǎng)站后付款的網(wǎng)站建設流程,更有象山免費網(wǎng)站建設讓你可以放心的選擇與我們合作。

JMeter提供了很多函數(shù),如果能夠熟練使用,可以為腳本帶來很多方便。

JMeter函數(shù)是一種特殊值,可用于除測試計劃外的任何組件。

函數(shù)調用的格式如下所示:

${__functionName(var1,var2,var3)}
其中,__functionName為函數(shù)名,括號內是函數(shù)的參數(shù),無參數(shù)時可以不用括號,如${__UUID}

Tips:
如果參數(shù)包含逗號,那么一定要使用“”來轉義,否則JMeter會把它當作一個參數(shù)分隔符

實際使用時,可通過函數(shù)助手對話框選擇函數(shù),設置參數(shù)后,點擊生成按鈕生成函數(shù)字符串。

本文講述常用的JMeter函數(shù)。

一、JMeter常用函數(shù)1-10

一、__BeanShell:beanshell函數(shù)
jmeter學習指南之常用函數(shù)的使用
1、它有兩個參數(shù),第一個參數(shù)是要執(zhí)行的語句,可以是beanshell語句或者是文件地址,是必選參數(shù);第二個參數(shù)是保存結果的變量名稱,非必選參數(shù)。

2、Example:

${__BeanShell(123*456)}:返回56088
 
${__BeanShell(source("function.bsh"))}:會執(zhí)行外部腳本function.bsh,并返回結果
 
${__BeanShell(import java.util.*;Properties props = System.getProperties();String osName  = props.getProperty("os.name");if(osName.contains("Windows"))return 443;return 8443;)}:判斷端口

3、與beanshell元件比較:
該函數(shù)與beanshell元件(beanshell sampler、beanshell preprocess等)作用是一樣的,只是beanshell函數(shù)更常用于一些簡單的判斷或計算等,可以把少量的腳本放在函數(shù)中直接賦值給一個變量,而不用總是添加beanshell元件。

二、__regexFunction:正則表達式函數(shù)
jmeter學習指南之常用函數(shù)的使用
1、該函數(shù)使用用戶提供的正則表達式來解析前面的
${refName}來引用第2個參數(shù)(Template for the replacement string)的計算結果,這依賴于函數(shù)的解析結果。

${refName_g0}來引用函數(shù)解析后發(fā)現(xiàn)的所有匹配結果。

${refName_g1}來引用函數(shù)解析后發(fā)現(xiàn)的第一個匹配組合。

${refName_g#}來引用函數(shù)解析后發(fā)現(xiàn)的第n個匹配組合。

${refName_matchNr}來引用函數(shù)總共發(fā)現(xiàn)的匹配組合數(shù)目。

具體參數(shù)描述如下:
jmeter學習指南之常用函數(shù)的使用
其實這個函數(shù)的作用跟正則表達式提取器的作用是類似的。


三、__counter:計數(shù)器函數(shù)
jmeter學習指南之常用函數(shù)的使用
1、每次調用計數(shù)器函數(shù)都會產生一個新值,從1開始每次加1。計數(shù)器既可以被配置成針對每個虛擬用戶是獨立的,也可以被配置成所有虛擬用戶公用的。

2、如果每個虛擬用戶的計數(shù)器是獨立增長的,那么通常被用于記錄測試計劃運行了多少遍。全局計數(shù)器通常被用于記錄發(fā)送了多少次請求。

3、計數(shù)器使用一個整數(shù)值來記錄,允許的最大值為2,147,483,647。

4、目前計數(shù)器函數(shù)實例是獨立實現(xiàn)的(JMeter 2.1.1及其以前版本,使用一個固定的線程變量來跟蹤每個用戶的計數(shù)器,因此多個計數(shù)器函數(shù)會操作同一個值)。全局計數(shù)器(FALSE)每個計數(shù)器實例都是獨立維護的。

5、該函數(shù)也有對應的配置元件:計數(shù)器,功能類似。

四、__threadNum

函數(shù)__threadNum只是簡單地返回當前線程的編號。線程編號不依賴于線程組,這就意味著從函數(shù)的角度看來,某個線程組的線程#1和另一個線程組的線程#1是沒有區(qū)別的。另外,該函數(shù)沒有參數(shù)。

這一函數(shù)不能用在任何配置元件中(如用戶定義的變量),原因在于配置元件是由一個獨立線程運行的。另外在測試計劃(Test Plan)中使用也是沒有意義的。所以,很少用。

五、__intSum: 整數(shù)求和函數(shù)
jmeter學習指南之常用函數(shù)的使用
1、函數(shù)__intSum可以被用來計算兩個或者更多整數(shù)值的合。至少需要兩個整數(shù),如果指定變量名則名稱中必須包含一個非數(shù)字字母,否則它會被當成另一個整數(shù)值,而被函數(shù)用于計算。

2、當有多個整數(shù)時點擊添加按鈕來增加參數(shù),但是需要注意的是,添加完參數(shù)后,點擊”生成”的函數(shù)默認是把手動添加的函數(shù)放在后面,這時需要手動調整變量名的位置,把它放到最后,否則會報錯。

示例如下:
jmeter學習指南之常用函數(shù)的使用
**注意:這是在4.0之前版本里的bug,在最新版本4.0中已做了優(yōu)化,可以直接在第二個參數(shù)中輸入多個逗號分隔的值來實現(xiàn)多個參數(shù)求和。

六、__longSum:長整型求和函數(shù)

該函數(shù)用來計算兩個或更多長整型值的和,使用方法跟上面的__intSum函數(shù)一樣。

七、__StringFromFile:讀取文件中的字符串函數(shù)
jmeter學習指南之常用函數(shù)的使用
1、該函數(shù)用來從文本文件中讀取字符串。支持讀取多個文件。

2、使用配置元件CSV Data Set Config ,也能達到相同的目的,而且方法更簡單,但是它目前不支持多個輸入文件。

3、每次調用函數(shù),都會從文件中讀取下一行。當?shù)竭_文件末尾時,函數(shù)又會從文件開始處重新讀取,直到最大循環(huán)次數(shù)。如果在一個測試腳本中對該函數(shù)有多次引用,那么每一次引用都會獨立打開文件,即使文件名是相同的(如果函數(shù)讀取的值,在腳本其他地方也有使用,那么就需要為每一次函數(shù)調用指定不同的變量名)。

4、如果在打開或者讀取文件時發(fā)生錯誤,那么函數(shù)就會返回字符串"**ERR**"。

示例:

${_StringFromFile(demo.txt,,,)} 讀取demo.txt
${_StringFromFile(PIN#'.'DAT,,1,2)} 讀取demo1.txt, demo2.txt
${_StringFromFile(PIN.DAT,,,2)} 讀取demo.txt兩次

5、函數(shù)的第三個參數(shù):初始的序列號,如果省略,那么結束序列號就代表文件的循環(huán)讀取次數(shù)。

6、函數(shù)的第四個參數(shù):結束序列號,如果省略,那么序列號會無限增長。

7、讀取多個文件示例:

需要在文件名中使用序列號:當使用序列號時,文件名需要使用格式字符串java.text.DecimalFormat。當前的序列號會作為唯一的參數(shù)。如果不指明可選的初始序列號,就使用文件名作為起始值。一些有用的格式序列如下:

#:插入數(shù)字,不從零開始,不包含空格。
 
000:插入數(shù)字,包含3個數(shù)字組合,不從零開始。
 
例如:
 
pin#'.'dat -> pin1.dat, ...  pin9.dat, pin10.dat, ...   pin9999.dat   
 
pin000'.'dat -> pin001.dat ... pin099.dat ... pin999.dat ... pin9999.dat   
 
pin'.'dat# -> pin.dat1, ... pin.dat9 ... pin.dat999  
如果不希望某個格式字符被翻譯,需要為它加上單引號。注意上面的"."是格式字符,必須被單引號所包含。

比如現(xiàn)在要同時讀取兩個文件,分別是PIN1.DAT, PIN2.DAT:

${_StringFromFile(PIN#'.'DAT,,1,2)}:同時讀取 PIN1.DAT, PIN2.DAT。
 
${_StringFromFile(PIN.DAT,,,2)}:讀取 PIN.DAT 兩次。
 
${_StringFromFile(test#'.'txt,,1,2)}:同時讀取test1.txt,test2.txt


八、__machineName

函數(shù)__machineName返回本機的主機名。

九、__javaScript

1、函數(shù)__javaScript可以用來執(zhí)行JavaScript代碼片段(非Java),并返回結果值。

2、JMeter的_javaScript函數(shù)會調用標準的JavaScript解釋器,還可以直接調用jmeter的內置函數(shù)。

3、請記得為文本字符串添加必要的引號。另外,如果表達式中有逗號,請確保對其轉義。

       例如,${__javaScript('${sp}'.slice(7,99999))},對7之后的逗號進行了轉義。

十、__Random:隨機數(shù)函數(shù)

函數(shù)__Random會返回指定最大值和最小值之間的隨機數(shù)。

十一、_RandomString() :隨機字符串函數(shù)
jmeter學習指南之常用函數(shù)的使用
Random string length:隨機字符的長度
 
Chars to use for random string generation:用來生成隨機字符串的字符,可以是純數(shù)字,純字符,字符字母數(shù)字組合
 
Name of variable in which to store the result (optional):隨機生成的字符被變量保存
 
${__RandomString(6,abcdefgh2234566,ranstr)},解釋:隨機生成一個6位長度的字符串被ranstr保存;

十二、__property

1、函數(shù)__property會返回一個JMeter屬性的值。如果函數(shù)找不到屬性值,而又沒有提供默認值,則它會返回屬性的名稱。

2、例如,

${__property(user.dir)}:返回屬性user.dir的值。
 
${__property(user.dir,UDIR)}:返回屬性user.dir的值,并保存在變量UDIR中。
 
${__property(abcd,ABCD,atod)}:返回屬性abcd的值 (如果屬性沒有定義,返回"atod"),并保存在變量ABCD 中。
 
${__property(abcd,,atod)}:返回屬性abcd 的值(如果屬性沒有定義,返回"atod"),但是并不保存函數(shù)的返回值。

十三、_P

1、函數(shù)_P是一個簡化版的屬性函數(shù),目的是使用在命令行中定義的屬性。

2、不同于函數(shù)_property,本函數(shù)沒有提供選項用于設置保存屬性值的變量。另外,如果沒有設置默認值,默認值自動設為1。

3、例如:定義屬性值:

jmeter -Jgroup1.threads=7 -Jhostname1=www.realhost.edu
獲取值如下:

${__P(group1.threads)}:返回屬性group1.threads的值。
 
${__P(group1.loops)}:返回屬性group1.loops 的值。
 
${__P(hostname,www.baidu.com)}:返回屬性hostname的值,如果沒有定義該屬性則返回值www.baidu.com。
在上面的例子中,第一個函數(shù)調用返回7,第二個函數(shù)調用返回1,而最后一個函數(shù)調用返回www.baidu.com(除非這些屬性在其他地方有定義)。

十四、__log
jmeter學習指南之常用函數(shù)的使用
1、函數(shù)__log會記錄一條日志,并返回函數(shù)的輸入字符串。

2、OUT 和ERR的日志級別,將會分別導致輸出記錄到System.out和System.err中。在這種情況下,輸出總是會被打?。ㄋ灰蕾囉诋斍暗娜罩驹O置)。

例如:

${__log(Message)}:寫入日志文件,形如"...thread Name : Message"。
 
${__log(Message,OUT)}:寫到控制臺窗口。
 
${__log(${VAR},,,VAR=)}:寫入日志文件,形如"...thread Name VAR=value"。
 
十五、__split:字符串分割函數(shù)
jmeter學習指南之常用函數(shù)的使用
1、函數(shù)__split會通過分隔符來拆分傳遞給它的字符串,并返回原始的字符串。如果分隔符緊挨在一起,那么函數(shù)就會以變量值的形式返回"?"。拆分出來的字符串,以變量${VAR_1}、{VAR_2}…以此類推的形式加以返回。

2、分隔符默認是逗號,如果你想要多此一舉,明確指定使用逗號,需要對逗號轉義,如“,”

3、例如,在測試計劃中定義變量VAR="a||c|":

${__split(${VAR},VAR),|} :該函數(shù)調用會返回VAR變量的值,例如"a||c|",
         并設定VAR_n=4、VAR_1=a、VAR_2=?、VAR_3=c、VAR_4=?、VAR_5=null變量的值。
 
十六、_ _XPath
jmeter學習指南之常用函數(shù)的使用
1、函數(shù)__XPath讀取XML文件,并在文件中尋找與指定XPath相匹配的地方。每調用函數(shù)一次,就會返回下一個匹配項。到達文件末尾后,會從頭開始。如果沒有匹配的節(jié)點,那么函數(shù)會返回空字符串,另外,還會向JMeter日志文件寫一條警告信息。

整個節(jié)點列表都會被保存在內存之中。

例如:

${__XPath(/path/to/build.xml, //target/@name)} 
這會找到build.xml文件中的所有目標節(jié)點,并返回下一個name屬性的內容。

十七、__setProperty
jmeter學習指南之常用函數(shù)的使用
1、函數(shù)__setProperty用于設置JMeter屬性的值。函數(shù)的默認返回值是空字符串,因此該函數(shù)可以被用在任何地方,只要對函數(shù)本身調用是正確的。

2、通過將函數(shù)可選的第3個參數(shù)設置為"true",函數(shù)就會返回屬性的原始值。

3、屬性對于JMeter是全局的,因此可以被用來在線程和線程組之間通信。

十八、__time

1、函數(shù)__time可以通過多種格式返回當前時間。

2、如果省略了格式字符串,那么函數(shù)會以毫秒的形式返回當前時間。其他情況下,當前時間會被轉成簡單日期格式。包含如下形式:

YMD = yyyyMMdd
 
HMS = HHmmss
 
YMDHMS = yyyyMMdd-HHmmss
 
USER1 = JMeter屬性time.USER1
 
USER2 = JMeter屬性time.USER2
用戶可以通過修改JMeter屬性文件來改變默認格式,或者自定義格式,例如修改YMD格式: time.YMD=yyMMdd。

十九、__V

1、函數(shù)__V可以用于執(zhí)行變量名表達式,并返回執(zhí)行結果。它可以被用于執(zhí)行嵌套函數(shù)引用(目前JMeter不支持)。

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

 ${A1}:能正常工作。
 
 ${A${N}}:無法正常工作(嵌套變量引用)。
 
 ${__V(A${N})}:可以正常工作。A${N}變?yōu)锳1,函數(shù) __V返回變量值A1。
 
二十、__evalVar

1、函數(shù)__evalVar可以用來執(zhí)行保存在變量中的表達式,并返回執(zhí)行結果。

如此一來,用戶可以從文件中讀取一行字符串,并處理字符串中引用的變量。

2、例如:

假設變量"query"中包含有"select ${column} from ${table}",
而 "column"和"table" 中分別包含有 "name"和"customers",
那么${__evalVar(query)}將會執(zhí)行"select name from customers"。

二十一、__eval

1、函數(shù)__eval可以用來執(zhí)行一個字符串表達式,并返回執(zhí)行結果。

如此一來,用戶就可以對字符串(存儲在變量中)中的變量和函數(shù)引用做出修改。

2、例如:

給定變量 name=Smith、column=age、table=birthdays、
SQL=select ${column} from ${table} where name='${name}',
那么通過 ${__eval(${SQL})},就能執(zhí)行 "select age from birthdays where name='Smith'"
這樣一來,就可以與CSV數(shù)據(jù)集相互配合,例如,將SQL語句和值都定義在數(shù)據(jù)文件中。

二十二、__escapeHtml

1、函數(shù)__escapeHtml用于轉義字符串中的字符(使用HTML實體)。支持HTML 4.0實體。

2、例如:
"bread" & "butter"變?yōu)?"bread" & "butter"

二十三、__unescapeHtml

1、函數(shù)__unescapeHtml用于反轉義一個包含HTML實體的字符串,將其變?yōu)榘瑢嶋HUnicode字符的字符串。支持HTML 4.0實體。

2、例如:

字符串 "<Français>" 變?yōu)?""
3、如果函數(shù)不認識某個實體,就會將實體保留下來,并一字不差地插入結果字符串中。

例如,">&zzzz;x" 還是會變?yōu)?">&zzzz;x"。

二十四、__FileToString

1、函數(shù)__FileToString可以被用來讀取整個文件。每次對該函數(shù)的調用,都會讀取整個文件。

2、如果在打開或者讀取文件時發(fā)生錯誤,那么函數(shù)就會返回字符串"**ERR**"。

以上Jmeter函數(shù)你用過幾個呢?

看完有沒有發(fā)現(xiàn)有些函數(shù)可以很方便的解決你的問題呢?

如果你對哪個函數(shù)的使用有疑問,歡迎留言討論~~


網(wǎng)站欄目:jmeter學習指南之常用函數(shù)的使用
文章地址:
http://weahome.cn/article/geecoh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部