在上一篇文章【使用JMeter傳送Post請求】中,我們只介紹了在引數選項頁中新增資料,並且使用了兩種提交資料型別application/x-www-form-urlencoded
和multipart/form-data
進行演示。
這篇文章我們說明如何使用檔案上傳選項頁,實現Post請求上傳檔案。
1、用於演示的專案說明
Httpbin
是一個使用Python + Flask
編寫的HTTP Request & Response Service
專案,該服務主要用於測試 HTTP庫,你可以向他傳送請求,然後他會按照指定的規則將你的請求返回(檢視你所傳送請求中的資訊)。
Httpbin
支援HTTP/HTTPS
請求,支援所有的HTTP動詞,能測試HTTP請求和響應的各種資訊,比如 cookie
、ip
、headers
和登入驗證等。
Httpbin
介面地址:http://httpbin.org/
提示:按照規則請求
http://httpbin.org/
,會返回傳送請求報文的完整內容。具體可檢視https://www.cnblogs.com/liuyuelinfighting/p/14788860.html文章,有詳細說明。
2、測試計劃內包含的元件
新增元件操作步驟:
- 建立測試計劃。
- 建立執行緒組:
選中“測試計劃”右鍵 —> 新增 —> 執行緒(使用者) —> 執行緒組
。 - 線上程組裡面,新增取樣器“HTTP請求”元件:
選中“執行緒組”右鍵 —> 新增 —> 取樣器 —> HTTP請求
。 - 線上程組裡面,新增監聽器“察看結果樹”元件:檢視結果,
選中“執行緒組”右鍵 —> 新增 —> 監聽器 —> 察看結果樹
。
最終測試計劃中的元件如下:
點選執行按鈕,會提示你先儲存該指令碼,指令碼儲存完成後會直接自動執行該指令碼。
3、HTTP請求介面內容
取樣器“HTTP請求”介面,如下圖所示:
關於引數編輯如下:
(1)編寫介面所需要上傳的檔案資料
上傳檔案選項頁內容:
說明:
- 上傳檔案時,需要勾選
Use multipart/form-data for post
選項。(我個人實踐中發現,在上傳檔案選項頁編輯引數後,Post請求預設會以multipart/form-data
資料格式進行提交資料,勾不勾選沒有區別。但是工作中按照介面文件來操作,如果沒有說明最後好勾選上。) - 在上傳檔案選項頁中,需要填寫三個引數:
1)檔名稱:輸入上傳檔案的路徑;(注意:通過以JMeter指令碼所在目錄為目標點,可以使用檔案的相對路徑。)
2)引數名稱:自定義變數名,例如Filedata
(被賦值於檔案內容);
3)MIME型別:例如application/octet-stream
。 - 引數選項頁和訊息體資料選項頁只能選擇其一。
(2)編寫介面所需要的其他資料
我們在上傳檔案的同時,也可以在引數選項頁中新增介面需要其他引數:
4、檢視結果
執行指令碼後,結果如下圖所示:
我們可以看到檔案中的內容和Form表單中的資料,都傳送出去了。
5、總結
在日常工作中,如果介面寫的很詳細,我們就完全按照介面文件的要求編寫JMeter指令碼。
如果介面中有部分內容寫的不明確,我們可以按照通用的請求規範來編寫JMeter指令碼。
如果面對一個專案沒有介面文件,那我們就需要使用工具抓取請求,來檢視該介面具體的內容,當然可以找開發溝通了解。
6、補充:MIME型別簡介
(1)MIME說明
MIME(Multipurpose Internet Mail Extensions)
:多用途網路郵件擴充套件型別,可被稱為Media type
或Content 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/midi 或audio/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平臺) |