jmeter 函數助手,常用函數使用


函數有兩種:用戶定義的靜態值(或變量)和內置函數。
用戶定義的靜態值允許用戶定義在編譯和提交要運行的測試樹時用其靜態值替換的變量。此替換在測試運行開始時發生一次。例如,這可以用於替換所有HTTP請求的DOMAIN字段-只需更改測試以針對具有相同測試的其他服務器即可,這很簡單。

函數在線程之間共享。

函數可以寫入任何測試組件的任何字段中(除了TestPlan)。一些字段不允許隨機字符串,因為它們需要數字,因此將不接受函數。但是,大多數字段將允許功能。

函數的引用方式相同,但按照慣例,函數名稱以“ __ ” 開頭,以避免與用戶值名稱*沖突。一些函數使用參數來配置它們,這些參數用括號括起來,以逗號分隔。如果函數不帶參數,則可以省略括號

括號括住發送給函數的參數,例如$ {__ time(YMD)} 實際參數因函數而異。不需要參數的函數可以省略括號,例如$ {__ threadNum}

如果函數參數包含逗號,請確保使用“ \ ”將其轉義,否則JMeter會將其視為參數定界符。例如:

$ {__ time(EEE \,d MMM yyyy)}
如果在Windows路徑的變量之前使用 \,例如C:\ test \ $ {test},請確保轉義\, 否則JMeter將不會解釋該變量,例如: C:\\ test \\ $ {test}
或者,僅使用/代替路徑分隔符-例如C:/ test / $ {test} -Windows JVM將根據需要轉
 ==================================================================================

一、__BeanShell函數;它有兩個參數:第一個參數是要執行的語句,可以是beanshell語句或者是文件地址,是必選參數;第二個是保存結果的變量名稱,非必選參數;

如:${__BeanShell(3*4,)};返回12;

  ${__BeanShell(source("hehe.bsh"),)} ;會執行外部腳本hehe.bsh;並返回結果;

二、__計數器(__counter);

 計數器每次被調用都會生成一個新的數字,從1開始,每次遞增+1。可以將計數器配置為使每個模擬用戶的值保持獨立(true),或者對所有用戶使用相同的計數器(false)。如果每個用戶的值分別增加,那就像在測試計划中計算迭代次數一樣。全局計數器就像計算該請求運行了多少次。

如下圖:false,counter全局計數器;線程數2,循環次數3,相當於6個用戶,6個用戶的請求數的累加;counter相當於記錄測試發送了多少次請求;

true,每個用戶單獨計數,線程數2,循環次數3,2用戶分別循環3次;所以計數器值為3;第一個用戶跑完第1次循換,接着第2次訓話;第一個用戶跑后,接着第2個用戶跑.... ;每個用戶獨立計數,相當於記錄測試計划循環了多少次(運行了多少遍);

 

 三、__CSVRead;填寫文件,屬性:文件名,列號(0=第一列,1=第二列,以此類推)

 四、__regexFunction;

該函數使用用戶提供的正則表達式來解析前面的服務器響應(或者是某個變量值)。

其實這個函數的作用跟正則表達式提取器的作用是類似的。

 

五、__隨機(__Random);

隨機函數用於返回指定最小值和最大值之間的隨機數。

$ {__ Random(0,10)} #將返回0到10之間的隨機數
$ {__ Random(0,10,MYVAR)} #將返回0到10之間的隨機數,並將其存儲在MYVAR中。$ {MYVAR}將包含隨機數

如設置手機號碼;${__Random(13800000000,14000000000,phone)}

六、__隨機字符串(__RandomString);屬性有長度、使用字符、變量名;

只填寫長度(5),其它不填寫,生成的結果不可讀;如下圖;

 

 長度6,使用字符abcde12345,將返回從“abcde12345”選取的5個字符的隨機字符串;

 七、__threadNum;

函數__threadNum只是簡單地返回當前線程的編號。某個線程組的1和另一個線程組的線程1是沒有區別的;該函數沒有參數;平時基本不用該函數;

 

 八、__intSum:整數求和函數;函數__intSum可以被用來計算兩個或者更多整數值的合。至少需要兩個整數,如果指定變量名則名稱中必須包含一個非數字字母,否則它會被當成另一個整數值,而被函數用於計算。

 

 

 九、__longSum;長整數求和函數;

 

 十、__StringFromFile:讀取文件中的字符串函數;用來實現參數化;若讀取or打開此文件時發生錯誤,則會返回"**ERR**"字符串;

 

 

 

 

 

 十一、__machineName; 函數__machineName返回本機的主機名;

十二、__time函數;

函數__time可以通過多種格式返回當前時間
如果省略了格式字符串,那么函數會以毫秒的形式返回當前時間。
其他情況下,當前時間會被轉成簡單日期格式。包含如下形式:
YMD = yyyyMMdd;
HMS = HHmmss;
YMDHMS = yyyyMMdd-HHmmss;
USER1 = JMeter屬性time.USER1;
USER2 = JMeter屬性time.USER2;
用戶可以通過修改JMeter屬性來改變默認格式,例如:time.YMD=yyMMdd。
${__time(yyyy-MM-dd HH:mm:ss:SSS,)}:格式化生成時間格式2020-03-16 11:48:35:984;
${__time(,)}:默認該公式精確到毫秒級別,13位數1584330221123;
${__time(/1000,)}:該公式精確到秒級別,10位數
1584330221;


__timeshift
(格式、日期、移位、語言環境、變量);可對日期進行移位加減操作;

格式 - 將顯示創建日期的格式。如果該值未被傳遞,則以毫秒為單位創建日期。

日期 - 這是日期值。用於如果要通過添加或減去特定天數,小時或分鍾來創建特定日期的情況。如果參數值未通過,則使用當前日期。

移位 - 表示要從日期參數的值中添加或減去多少天,幾小時或幾分鍾。如果該值未被傳遞,則不會將任何減去或添加到日期參數的值中。

    “P1DT2H4M5S” 解析為“添加1天2小時4分鍾5秒”

區域設置 - 設置創建日期的顯示語言。不是必填項

變量 - 創建日期的值將被分配給的變量的名稱。不是必填項

“-P-6H3M”不做任何處理;

“PT-6H3M”解析為“-6小時+3分鍾”;“-PT-6H3M”解析為“+6小時-3分鍾”

 

 __RandomDate:時間段內隨機取值;

默認時間格式:yyyy-MM-dd;

Start date 默認為當天時間;

 

 

 



十三、__property;

如${__property(user.dir,,)}:返回屬性user.dir的值,如果沒有值,則返回空;

如 ${__property(abd,hehe,xixi)}:返回屬性abd的值,如果屬性abd沒有值,返回"xixi",並且保存在變量hehe中;

測試計划中直接引用hehe,會找不到其值;需要先引用變量${__property(abd,hehe,xixi)};

 十四、__P;

函數__P是一個簡化版的屬性函數,目的是使用命令行中定義的屬性;

不同於函數__property,此函數不可以保存屬性值得變量;

 十五、__log;

 函數__log會記錄一條日志,並返回函數的輸入字符串;

OUT和ERRO的日志級別,將會分別導致輸出記錄到System.out和System.err中。在這種情況下,輸出總會被打印;

${__log(hehe,,xixi,)},寫入日志文件,形如:"thread Name xixi=hehe";

${__log(${XIXI},OUT,,)}:寫到控制台窗口;

 

 十六、__split;字符串分割函數;

十七、__XPath;

 函數__XPath讀取XML文件,並在文中尋找與指定XPath相匹配的地方;每調用函數一次,就會返回下一個匹配項。到達文件末尾后,會從頭開始。如果沒有匹配的節點,那么函數會返回空字符串,另外,還會向JMeter日志文件寫一條警告信息。

十八、__setProperty;

函數__setProperty用於設置JMeter屬性的值,屬性對於JMeter是全局的,因此可以被用來在線程和線程組之間的通信;

十九、__V;函數__V可以用於執行變量名表達式;如下圖變量N=3;${A${N}}無法執行;${__V(A${N})}執行結果為A3;

 

 二十、__FileToString;可以被用來讀取整個文件;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

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



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