『動善時』JMeter基礎 — 25、JMeter引數化補充練習

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

我們本篇文章演示在請求中,以Json形式的資料格式,實現JMeter引數化。

我們以小專案學院管理系統為例,下載地址:點選下載,裡面有詳細的啟動配置說明和API介面文件。

介面文件如下:

學院-新增
    1) 請求方法:POST
    2) 請求地址:http://127.0.0.1:8000/api/departments/
    3) 請求JOSN報文:(需要Content-Type=application/json)
    4) 呼叫傳入的json串如下(可新增多條,之間用,隔開):
        {
            "data": [
                    {
                        "dep_id":"T01",
                        "dep_name":"Test學院",
                        "master_name":"Test-Master",
                        "slogan":"Here is Slogan"
                    }
              ]
        }
   5) 新增成功返回報文:
    {
      "already_exist": {
        "results": [],
        "count": 0
      },
      "create_success": {
        "results": [
          {
            "dep_id": "T02",
            "dep_name": "Java學院",
            "master_name": "Java-Master",
            "slogan": "java"
          }
        ],
        "count": 1
      }
    }
   6) 新增失敗id已存在-返回報文:
    {
      "already_exist": {
        "results": [
          {
            "dep_id": "T01",
            "dep_name": "Test學院",
            "master_name": "Test-Master",
            "slogan": "Here is Slogan"
          }
        ],
        "count": 1
      },
      "create_success": {
        "results": [],
        "count": 0
      }
    }
7) 新增失敗json格式錯誤:
    {
    "status_code": 400,
    "detail": "請求體引數格式錯誤。"
    }

1、使用“CSV資料檔案設定”元件實現引數化

例如:現在有一個需求,實現批量新增學院資訊。

(1)測試計劃中的元件

新增元件操作步驟

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

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

image

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

(2)資料檔案內容

先用Excel表格編輯所需的請求引數,內容如下:

image

我們需要把該檔案儲存為.csv格式。

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

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

image

(3)執行緒組元件內容

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

因為在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
  • 變數名稱:就是把資料檔案的每個變數名都填寫上,中間用逗號分割。
  • 忽略首行:選擇True,如果CSV檔案中首行寫的是變數名稱,選擇忽略首行。
  • 分隔符:如果CSV檔案中的資料,使用的是逗號隔開,就是預設值。如果是製表符,就用\t表示。
  • 是否允許帶引號?:如果變數值中有引號就選擇True,沒有則預設False即可。
  • 其他一般預設選擇。如果需求看上面說明中寫的很詳細,按工作中實際情況選擇。

(6)HTTP請求元件內容

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

編輯新增學院介面內容,如下圖所示:

image

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

(7)指令碼執行結果

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

image

可以看到四個學院都成功新增到資料庫中了。

我們再去資料庫中檢視一下,如下圖所示:

image

這樣就說明我們的JMeter測試指令碼實現成功了。

2、使用“使用者引數”元件實現引數化

接下來我們使用“使用者引數”元件,來實現上面的介面。

(1)新增元件操作步驟

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

最終測試計劃中的元件,如下圖所示:

image

(2)元件中的內容介紹

其實就是把上面示例中,CSV資料檔案設定元件刪除掉,然後在取樣器請求的下一級,新增一個使用者引數元件。

其他元件的內容都沒有任何的改動。

所以這裡指展示使用者引數元件中的內容,其他元件看上面配置就好。

使用者引數元件內容如下:

image

測試結果也是完全通過,資料能夠直接儲存到資料庫中。

資料庫中,如下圖所示:

image

說明我們上面的JMeter指令碼執行成功了。

相關文章