啟動jmeter后,可以在JMeter的選項菜單中找到函數助手對話框(快捷鍵:Ctrl+Shift+F1)
可以從下拉列表中選擇一個函數,並為其參數設定值,不同函數要求的參數也不同;
表格的左邊一列是函數參數的簡要描述,右邊一列是供用戶填充參數的值
Tips:
- 如果參數包含逗號,那么一定要使用
\
來轉義,否則 JMeter 會把它當作一個參數分隔符; - 實際使用時,一般通過函數助手對話框來生成函數字符串,不容易出錯。
- 一些函數中此項參數:Name of variable in which to store the result (optional) 變量名 :用於后續調用該函數的變量名稱
JMeter 中的函數主要分為如下幾類:
__setProperty
函數__setProperty用於設置JMeter屬性的值。函數的默認返回值是空字符串,因此該函數可以被用在任何地方,只要對函數本身調用是正確的。
通過將函數可選的第3個參數設置為"true",函數就會返回屬性的原始值。屬性對於JMeter是全局的,因此可以被用來在線程和線程組之間通信。
_CSVRead
- 從一個 CSV 文件中返回一個字符串,支持多個文件名。
- 當第一次調用該函數時,文件將被打開並讀取到一個內部數組中。如果檢測到空行,這將被視為文件的末尾。
- 所有對同一文件名的后續引用都使用相同的內部數組,文件名區分大小寫。
- 每個線程都有自己的指向文件數組中當前行的內部指針。當線程首先引用文件時,它將在數組中分配下一個空閑行,因此每個線程將訪問與所有其他線程不同的行(除非數組中的線程多於行)。
注意:
該函數不適合用於大型文件,因為整個文件都存儲在內存中。
對於較大的文件,最好使用 CSV Data Set Config 或者 StringFromFile。
默認情況下,該函數在每個逗號處拆分行。如果要輸入包含逗號的列,則需要通過設置屬性將分隔符更改為不出現在任何列數據中的字符,修改 jmeter.properties 文件中的 csvread.delimiter=。
1.點擊選項----選擇 函數助手對話框,選擇_CSVRead
CSV file to get values from | * ,這個參數是文件的路徑,csv的文件分隔符是逗號,也可以使用txt文本進行逗號分隔
CSV文件列號| next| *alias 取列數,一一對應
點擊生成,這里是從0開始取值的,0代表取的文件第一列,1代表取的第二列
2.將${__CSVRead(E:\JMeter\BI\schoolName.txt,0)}復制
設置線程組--線程數
將依次取不同入參值請求
__StringFromFile
- 用於從文本文件中讀取字符串,每次讀取一行,支持讀取多個文件。
- 使用配置元件CSV Data Set Config ,也能達到相同的目的,而且方法更簡單,但是它目前不支持多個輸入文件。
- 每次調用函數,都會從文件中讀取下一行。當到達文件末尾時,函數又會從文件開始處重新讀取,直到最大循環次數。如果在一個測試腳本中對該函數有多次引用,那么每一次引用都會獨立打開文件,即使文件名是相同的(如果函數讀取的值,在腳本其他地方也有使用,那么就需要為每一次函數調用指定不同的變量名)。
- 如果在打開或者讀取文件時發生錯誤,那么函數就會返回字符串 **ERR**。
- 啟動序號:初始的序列號,如果省略,那么結束序列號就代表文件的循環讀取次數。
- 末端序號:結束序列號,如果省略,那么序列號會無限增長。
#
:插入數字,沒有前導零或空格。000
:插入數字,數字不足三位時,將插入前導零補足三位;數字超過三位時,則插入數字實際位數。
用法說明:
上面的 .
是格式化字符,必須用單引號括起來
__RandomFromMultipleVars
1.首先要創建用戶定義的變量,如下圖
2.創建函數 ${__RandomFromMultipleVars(name1|name2|name3,name)},函數中幾個變量名用‘|’隔開,這個函數的意義在於:在設定的幾個值中隨機使用其一,如下在name1、nema2、name3中隨機使用
3.在body中使用:"name":"${__RandomFromMultipleVars(name1|name2|name3,name)}",必須和用戶定義的變量一起使用
__time
${__time(,)} 實時獲取時間,精確到 13 位數(“毫秒” 格式)時間戳:1555655388515
${__time(/1000,)} 實時獲取時間,精確到 10 位數(“秒” 格式)時間戳:1555655438
${__time(yyyy-MM-dd HH:mm:ss:SSS,參數名)} 實時獲取時間,格式化生成時間格式 yyyy-MM-dd HH:mm:ss:SSS (年-月-日 時:分:秒:毫秒)
__TimeShift(格式,日期,移位,語言環境,變量):可對日期進行移位加減操作
“PT20.345S”解析為“20.345秒” “PT15M”解析為“15分鍾” “PT10H”解析為“10小時” “P2D”解析為“2天” “P2DT3H4M”解析為“2天,3小時和4分鍾” “P-6H3M”解析為“-6小時+3分鍾” “-P6H3M”解析為“-6小時-3分鍾” “-P-6H + 3M”解析為“+6小時和-3分鍾”
指定格式:
${__timeShift(yyyy-MM-dd HH:mm:ss,,PT20.345S,,)}:以指定格式創建當前日期,再加上20.345S ${__timeShift(dd-MM-y-HH-mm-ss,,P1DT3H4M,,)}:以指定格式創建當前日期,再加上一天,三小時和四分鍾 ${__timeShift(dd/MM/yyyy,,P-1D,,)}:以指定格式創建當前日期,減去一天 ${__timeShift(dd/MM/yyyy,,P365D,,)}:以指定格式創建當前日期,再加上365天
參考文件:https://blog.csdn.net/lijing742180/article/details/86579160