一、變數
Jmeter中的變數用法:${變數名稱}
變數定義:兩種
1、使用者定義變數 User Defined Variables
2、使用者引數 User Parameters
1.1使用者定義變數
步驟:執行緒組 ->新增->配置元件->使用者定於變數
1.2使用者引數
步驟:執行緒組 ->新增->前置處理器->使用者引數
實際上在我們工作中,註冊這個介面,是需要不同的手機號碼去註冊的,如果我每次就算通過變數方式去操作,假如手機號碼不變,那跟原來的一個個手動輸入值就沒什麼不同了,也就沒必要了;所以我們希望的是它不斷的變化
那怎麼讓它變呢?隨機數,如何生成隨機數?
擴充:假如不是號碼,公司裡面需要大量不同的使用者暱稱怎麼辦?相當於隨機的使用者名稱怎麼辦?也就是不同的字母組合合成的字串;假如我要生成2-8位字元的使用者名稱怎麼辦?那麼,只需要先生成2-8位的隨機數即可
現在,回到正軌,那麼使用者定義的變數和使用者引數有什麼異同呢?
共同點:兩者均可以用於定義變數
不同點:前提:1個使用者,迴圈3次(跑3次) ,使用者定義變數:手機號沒有變化 , 使用者引數:手機號會變化
前提:3個使用者,迴圈1次(跑1次), 使用者定義變數:手機號沒有變化 , 使用者引數:手機號會變化
規律一:使用者定義變數,在jmeter啟動時,獲取一次值,在執行過程中,不再獲取值
使用者引數,在jmeter啟動時,獲取一次值,在執行過程中,還會動態獲取值
特點二:使用者定義變數,是全域性變數;使用者引數,是區域性變數
二、函式
特別要注意:嚴格區分大小寫 和 ${__函式名稱()}
1、__counter:計數器函式
2、__CSVRead:CSV的閹割版
3、__dateTimeConvert:時間轉換
4、__digest:加密演算法,支援MD5
5、__machineIP:獲取本機器IP
6、__machineName:獲取本機器名稱
7、__P、__property:獲取jmeter屬性的函式
8、__setProperty:設定jmeter屬性的函式
9、__time:獲取當前時間函式
10、__V:拼接函式,將函式拼接在一起
${__counter(,)} 計數器,點選【幫助】可以開啟文件
${__digest(MD5,123456,,,)} 加密
${__P(,)}、${__property(,,)} 獲取jmeter屬性的函式 , 它們是同一個函式(沒有區別),獲取.properties配合檔案中屬性的值
${__setProperty(,,)} 設定jmeter的屬性函式,設定.properties配合檔案中屬性的值
屬性:寫在properties檔案中的屬性,是靜態屬性,已經寫死在檔案中;
setProperty函式設定的屬性,是動態屬性,只對當前啟動的jmeter有效,關閉後,自動失效
系統屬性:作業系統,字元編碼等等;只能獲取,讀取,不能修改
${__time(YMD,)} 獲取當前函式
${__V(,)} 拼接函式
三、CSV配置元件
執行緒組-->新增-->配置元件-->CSV資料檔案設定
(1)檔名:可用csv和txt檔案
檔案選擇,優先選擇用txt檔案
原因1:csv消耗資源更多
原因2:csv檔案預設編碼不是utf-8,中文可能出現亂碼
檔案路徑,優先使用相對路徑,為了相容不同測試員使用
原因:預設用絕對路徑,檔案的路徑一旦找不到,指令碼無法執行
相對路徑寫法:相對於當前.jmx檔案的位置“./user.txt”
在上一級檔案中:“../user.txt”
(2)分隔符:使用符號分隔引數值
csv檔案:使用“英文逗號”間隔
txt檔案:是什麼間隔,就用什麼符號;
tab鍵製表符,用“\t”間隔
且看一下實際應用截圖:
a---------csv檔案
b------------txt檔案
c----------手機號碼和密碼,兩個欄位