Jmeter的指令碼引數化

excellent_1發表於2021-02-28

一、變數

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----------手機號碼和密碼,兩個欄位

相關文章