『動善時』JMeter基礎 — 15、使用JMeter實現檔案上傳

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

在上一篇文章【使用JMeter傳送Post請求】中,我們只介紹了在引數選項頁中新增資料,並且使用了兩種提交資料型別application/x-www-form-urlencodedmultipart/form-data進行演示。

這篇文章我們說明如何使用檔案上傳選項頁,實現Post請求上傳檔案。

1、用於演示的專案說明

Httpbin是一個使用Python + Flask編寫的HTTP Request & Response Service專案,該服務主要用於測試 HTTP庫,你可以向他傳送請求,然後他會按照指定的規則將你的請求返回(檢視你所傳送請求中的資訊)。

Httpbin支援HTTP/HTTPS請求,支援所有的HTTP動詞,能測試HTTP請求和響應的各種資訊,比如 cookieipheaders 和登入驗證等。

Httpbin介面地址:http://httpbin.org/

提示:按照規則請求http://httpbin.org/,會返回傳送請求報文的完整內容。

具體可檢視https://www.cnblogs.com/liuyuelinfighting/p/14788860.html文章,有詳細說明。

2、測試計劃內包含的元件

新增元件操作步驟

  1. 建立測試計劃。
  2. 建立執行緒組:選中“測試計劃”右鍵 —> 新增 —> 執行緒(使用者) —> 執行緒組
  3. 線上程組裡面,新增取樣器“HTTP請求”元件:選中“執行緒組”右鍵 —> 新增 —> 取樣器 —> HTTP請求
  4. 線上程組裡面,新增監聽器“察看結果樹”元件:檢視結果,選中“執行緒組”右鍵 —> 新增 —> 監聽器 —> 察看結果樹

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

image

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

3、HTTP請求介面內容

取樣器“HTTP請求”介面,如下圖所示:

image

關於引數編輯如下:

(1)編寫介面所需要上傳的檔案資料

上傳檔案選項頁內容:

image

說明

  1. 上傳檔案時,需要勾選Use multipart/form-data for post選項。(我個人實踐中發現,在上傳檔案選項頁編輯引數後,Post請求預設會以multipart/form-data資料格式進行提交資料,勾不勾選沒有區別。但是工作中按照介面文件來操作,如果沒有說明最後好勾選上。)
  2. 上傳檔案選項頁中,需要填寫三個引數:
    1)檔名稱:輸入上傳檔案的路徑;(注意:通過以JMeter指令碼所在目錄為目標點,可以使用檔案的相對路徑。)
    2)引數名稱:自定義變數名,例如Filedata(被賦值於檔案內容);
    3)MIME型別:例如application/octet-stream
  3. 引數選項頁和訊息體資料選項頁只能選擇其一。

(2)編寫介面所需要的其他資料

我們在上傳檔案的同時,也可以在引數選項頁中新增介面需要其他引數:

image

4、檢視結果

執行指令碼後,結果如下圖所示:

image

我們可以看到檔案中的內容和Form表單中的資料,都傳送出去了。

5、總結

在日常工作中,如果介面寫的很詳細,我們就完全按照介面文件的要求編寫JMeter指令碼。

如果介面中有部分內容寫的不明確,我們可以按照通用的請求規範來編寫JMeter指令碼。

如果面對一個專案沒有介面文件,那我們就需要使用工具抓取請求,來檢視該介面具體的內容,當然可以找開發溝通了解。

6、補充:MIME型別簡介

(1)MIME說明

MIME(Multipurpose Internet Mail Extensions):多用途網路郵件擴充套件型別,可被稱為Media typeContent type

MIME用於設定某種型別的檔案,當被瀏覽器開啟的時候,需要用什麼樣的應用程式。多用於HTTP通訊和設定文件型別例如HTML。

即:之所以叫多用途網路郵件擴充套件型別,因為它最早被用於電子郵件系統,後用於瀏覽器。

概括的說:MIME型別即Content-Type的值,服務端會檢測這個Content-Type的值。

(2)常見型別

如下表:

檔案字尾 Mime型別 說明
.flv flv/flv-flash 線上播放
.html或.htm text/html 超文字標記語言文字
.rtf application/rtf RTF文字
.gif image/gif GIF圖形
.jpeg.jpg image/jpeg JPEG圖形
.au audio/basic au聲音檔案
.mid.midi audio/midiaudio/x-midi MIDI音樂檔案
.ra.ram.rm audio/x-pn-realaudio RealAudio音樂檔案
.mpg.mpeg.mp3 video/mpeg MPEG檔案
.avi video/x-msvideo AVI檔案
.gz application/x-gzip GZIP檔案
.tar application/x-tar TAR檔案
.exe application/octet-stream 下載檔案型別
.rmvb video/vnd.rn-realvideo 線上播放
.txt text/plain 普通文字
.mrp application/octet-stream MRP檔案(國內普遍的手機)
.ipa application/iphone-package-archive IPA檔案(IPHONE)
.deb application/x-debian-package-archive DED檔案(IPHONE)
.apk application/vnd.android.package-archive APK檔案(安卓系統)
.cab application/vnd.cab-com-archive CAB檔案(Windows Mobile)
.xap application/x-silverlight-app XAP檔案(Windows Phone 7)
.sis application/vnd.symbian.install-archive SIS檔案(symbian平臺)
.jar application/java-archive JAR檔案(JAVA平臺手機通用格式)
.jad text/vnd.sun.j2me.app-descriptor JAD檔案(JAVA平臺手機通用格式)
.sisx application/vnd.symbian.epoc/x-sisx-app SISX檔案(symbian平臺)

參考:https://www.cnblogs.com/alummox/p/9515147.html

相關文章