『動善時』JMeter基礎 — 26、使用txt檔案實現JMeter引數化

繁華似錦Fighting發表於2021-05-29

之前我們都是使用.csv格式的資料檔案實現了JMeter的引數化,今天我們演示使用.txt格式的資料檔案實現JMeter的引數化。

需求:我們以一個登陸介面為例。

傳送登入請求的時候,我們需要傳遞兩個引數:phonepassword

針對這個登入介面設計5條用例,如下:

  1. 正常登入。
  2. 手機號未註冊,即:手機號填寫錯誤。
  3. 手機號不合法,即:手機號填寫錯誤位數不對或為空。
  4. 手機號或密碼錯誤,即:密碼錯誤。
  5. 密碼不合法,即:密碼為空。

1、測試計劃中的元件

新增元件操作步驟

  1. 建立測試計劃。
  2. 建立執行緒組:選中“測試計劃”右鍵 —> 新增 —> 執行緒(使用者) —> 執行緒組
  3. 線上程組中,新增配置元件"HTTP資訊頭管理器"元件:選中“執行緒組”右鍵 —> 新增 —> 配置元件 —> HTTP資訊頭管理器
  4. 線上程組中,新增配置元件CSV Data Set Config元件:選中“執行緒組”右鍵 —> 新增 —> 配置元件 —> CSV資料檔案設定
  5. 線上程組中,新增取樣器“HTTP請求”元件:選中“執行緒組”右鍵 —> 新增 —> 取樣器 —> HTTP請求
  6. 線上程組中,新增監聽器“察看結果樹”元件:檢視結果,選中“執行緒組”右鍵 —> 新增 —> 監聽器 —> 察看結果樹

最終測試計劃中包含的元件如下:

image

點選執行按鈕,會提示你先儲存該指令碼,指令碼儲存完成後會直接自動執行該指令碼。

2、資料檔案內容

建立一個.txt檔案,名為login_data.txt,然後根據需求編輯資料檔案內容,這次我們不加列表明。

然後使用Notepad++開啟該檔案,點選“編碼” —> 轉為UTF-8編碼,防止中文亂碼。

最終所得到的.txt格式檔案的內容如下:

image

3、執行緒組元件內容

如果需要使用.txt檔案中所有的資料,需要設定執行緒組的執行緒數或迴圈次數。

因為在CSV資料檔案設定元件,有Recycle on EOFStop thread on EOF選項的關係,所以設定執行緒數和迴圈次數都可以實現,使用資料檔案中的每一組資料進行測試。

如下圖所示:

image

4、HTTP資訊頭管理器元件內容

因為我們要使用Post請求傳送Json資料,所以需要在請求頭中設定Content-Type=application/json

如果我們不在請求頭中進行設定,預設請求頭的Content-Type值為text/plain。(這在前面的Post請求文章中有詳細的說明)

如下圖所示:

image

5、CSV資料檔案設定元件內容

如下圖所示:

image

我一般常用操作,簡單說明:

  • 檔名:就直接瀏覽選擇檔案即可,也就是使用資料檔案的絕對路徑。
  • 檔案編碼選擇UTF-8
  • 變數名稱:這裡定義的就是引數化變數的引用名稱,要與資料檔案中的列相對應,中間用逗號分割。
  • 忽略首行:選擇False,因為這次我們沒有新增列名。如果資料檔案中首行寫的是變數名稱,選擇忽略首行。
  • 分隔符:如果.txt檔案中的資料,使用的是逗號隔開,就是預設值。如果是製表符,就用\t表示。
  • 是否允許帶引號?:如果變數值中有引號就選擇True,沒有則預設False即可。
  • 其他一般預設選擇。如果需求看上面說明中寫的很詳細,按工作中實際情況選擇。

6、HTTP請求元件內容

在JMeter中使用引數化變數的格式:${變數名}

編輯登入介面內容,如下圖所示:

image

我們可以看到${變數名}中的引用變數名,是以CSV資料檔案設定元件中變數名稱中定義變數名為準。如果不在變數名稱欄中定義任何內容,就以資料檔案中的標題列名為引用變數名。

7、指令碼執行結果

該測試指令碼執行結果如下圖所示:

image

我們可以看到,一共傳送了5次請求,每次請求使用的引數值都是不同的,並且返回結果的預期也與我們設想的一樣。

這樣就演示了,使用.txt檔案作為資料檔案,實現JMeter中的引數化。

相關文章