Jmeter之模擬檔案上傳、下載介面操作--轉載
一、準備工作:
- 上傳介面一個(自行開發解決了)
- 下載介面
- ps:沒有困難創造困難也要上
- jmeter4.0版本
上傳介面原始碼
/** * 檔案上傳 */ @RequestMapping(value = "/fileUpload", method = RequestMethod.POST) @ApiOperation(value = "上傳檔案", httpMethod = "POST") @ResponseBody public String fileUpload(@RequestParam(value = "file", required = false) MultipartFile file) { if (Objects.isNull(file)) { return getMessage("90110", "上傳檔案不能為空!"); } String fileName = file.getOriginalFilename(); String path = "F:/upload"; File dest = new File(path + "/" + fileName); if (!dest.getParentFile().exists()) { //判斷檔案父目錄是否存在 dest.getParentFile().mkdir(); } try { //儲存檔案 file.transferTo(dest); return getMessage("90000", "上傳檔案成功!"); } catch (IllegalStateException e) { // TODO Auto-generated catch block return getMessage("90555", "上傳檔案失敗!"); } catch (IOException e) { return getMessage("90555", "上傳檔案失敗!"); } }
二、jmeter做上傳的指令碼
2.1、編寫指令碼流程
首先新增一個執行緒組,然後線上程組裡面新增一個http請求,因為是傳送資料,所有是post請求,寫好上傳的地址,然後寫好檔案路徑
1、新增執行緒組:右鍵測試計劃,新增-Threads(Users)-執行緒組;
2、新增一個http請求:右鍵執行緒組,新增-Sampler-HTTP請求;
3、寫好http請求中的url和路徑,以及要上傳的檔案
4、新增一個檢視結果樹,檢視介面呼叫結果。右鍵執行緒組,新增-監聽器-檢視結果樹;
2.2、指令碼例項
協議:http
伺服器名稱:127.0.0.1
埠號:8888
請求型別:post
路徑:/fileUpload
body:要選files_upload這個tab頁,寫檔案路徑,和引數名
下面是指令碼截圖:
2.3、執行指令碼,檢視結果
看下面的圖,執行結果,介面返回成功,再去我本地F盤(接口裡寫死的)下是否有檔案,看一下,到底有沒有成功。
看下面的圖,對應目錄下已經有咱們剛才上傳的檔案了,及時間也對得上
------------------------------------------------------------------------------------------------------------分割線---------------------------------------------------------------------------------------------------------------------------
可能遇到的坑:
ps:此處為程式碼開發部分,感興趣的同學可以瞭解下及解決方案參考
問題一:關於報錯:
Request”,”exception”:”org.springframework.web.multipart.support.MissingServletRequestPartException”,”message”:”Required request part ‘file’ is not present”,”path”:”/excel/import/upload”}
---------------------
我錯誤的原因和解決方法:
主要是由於前臺傳遞mutipartFile,表單的名字是file,但是再feign呼叫的時候我使用的是requestPart(“file”). 因此無法傳遞。
修改前端表單的檔名為file
問題二:
400 bad request: Required request part ‘file’ is not present
猜測通過@RequestParam(value = “file”, required = false)這種方式來取參的話,file欄位就是可選的了。
這個錯誤大概是說沒有file這個欄位,而這個欄位又是必須的,即使用了註釋,如下面
@RequestParam("file") MultipartFile file
那麼就需要我們去檢查下前端頁面是否存在這個欄位了
問題三:
org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found
不手動新增content-type後就行了:此時訪問成功,去掉訊息頭多餘的新增
------------------------------------------------------------------------------------------------------------分割線---------------------------------------------------------------------------------------------------------------------------
三、jmeter下載檔案。
3.1準備工作:
圖片的url是:http://a.hiphotos.baidu.com/image/pic/item/4b90f603738da977b1e8c6c7ba51f8198718e313.jpg
3.2編寫指令碼流程
首先新增一個執行緒組,然後線上程組裡面新增一個http請求,因為是獲取資料,所有是get請求,寫好下載的地址
1、新增執行緒組:右鍵測試計劃,新增-Threads(Users)-執行緒組;
2、新增一個http請求:右鍵執行緒組,新增-Sampler-HTTP請求;
3、寫好http請求中的url和路徑;
4、新增beanshell,獲取到返回的檔案內容,儲存到一個檔案裡面。右鍵執行緒組,新增-Sampler-BeanShellSampler,beanshell程式碼如下:
importjava.io.*; byte[]result=prev.getResponseData();//這個是獲取到請求返回的資料,prev是獲取上個請求的返回 Stringfile_name="C:\\Users\\bjniuhanyang\\Desktop\\BaiDu.jpg";//代表存放檔案的位置和檔名 Filefile=newFile(file_name); FileOutputStreamout=newFileOutputStream(file); out.write(result); out.close();
5、新增一個檢視結果樹,檢視介面呼叫結果。右鍵執行緒組,新增-監聽器-檢視結果樹;
3.3 指令碼例項
協議:http
伺服器名稱:a.hiphotos.baidu.com
埠號:80 (提示,埠號預設是就是80,可以不用寫哦)
請求型別:get
路徑:/image/pic/item/4b90f603738da977b1e8c6c7ba51f8198718e313.jpg
指令碼截圖如下
下面這個是beanshell裡面的內容,也就是咱們儲存檔案的操作。
3.4 執行指令碼,檢視結果
看下面的圖,執行結果,已經可以看到剛才這張圖片了,而且請求都是成功的。
咱們再去桌面上看,檔案已經存在F盤根目錄下了
以上就是利用jmeter實現上傳下載操作啦,感興趣的同學可以自己動動手練習下
優秀不夠,你是否無可替代
軟體測試交流QQ群:631646987,期待你的加入!!
歡迎關注我的微信公眾號:軟體測試君
分類: Jmeter 好文要頂 關注我 收藏該文 Refain
關注 - 17
粉絲 - 64 +加關注
一、準備工作:
- 上傳介面一個(自行開發解決了)
- 下載介面
- ps:沒有困難創造困難也要上
- jmeter4.0版本
上傳介面原始碼
/** * 檔案上傳 */ @RequestMapping(value = "/fileUpload", method = RequestMethod.POST) @ApiOperation(value = "上傳檔案", httpMethod = "POST") @ResponseBody public String fileUpload(@RequestParam(value = "file", required = false) MultipartFile file) { if (Objects.isNull(file)) { return getMessage("90110", "上傳檔案不能為空!"); } String fileName = file.getOriginalFilename(); String path = "F:/upload"; File dest = new File(path + "/" + fileName); if (!dest.getParentFile().exists()) { //判斷檔案父目錄是否存在 dest.getParentFile().mkdir(); } try { //儲存檔案 file.transferTo(dest); return getMessage("90000", "上傳檔案成功!"); } catch (IllegalStateException e) { // TODO Auto-generated catch block return getMessage("90555", "上傳檔案失敗!"); } catch (IOException e) { return getMessage("90555", "上傳檔案失敗!"); } }
二、jmeter做上傳的指令碼
2.1、編寫指令碼流程
首先新增一個執行緒組,然後線上程組裡面新增一個http請求,因為是傳送資料,所有是post請求,寫好上傳的地址,然後寫好檔案路徑
1、新增執行緒組:右鍵測試計劃,新增-Threads(Users)-執行緒組;
2、新增一個http請求:右鍵執行緒組,新增-Sampler-HTTP請求;
3、寫好http請求中的url和路徑,以及要上傳的檔案
4、新增一個檢視結果樹,檢視介面呼叫結果。右鍵執行緒組,新增-監聽器-檢視結果樹;
2.2、指令碼例項
協議:http
伺服器名稱:127.0.0.1
埠號:8888
請求型別:post
路徑:/fileUpload
body:要選files_upload這個tab頁,寫檔案路徑,和引數名
下面是指令碼截圖:
2.3、執行指令碼,檢視結果
看下面的圖,執行結果,介面返回成功,再去我本地F盤(接口裡寫死的)下是否有檔案,看一下,到底有沒有成功。
看下面的圖,對應目錄下已經有咱們剛才上傳的檔案了,及時間也對得上
------------------------------------------------------------------------------------------------------------分割線---------------------------------------------------------------------------------------------------------------------------
可能遇到的坑:
ps:此處為程式碼開發部分,感興趣的同學可以瞭解下及解決方案參考
問題一:關於報錯:
Request”,”exception”:”org.springframework.web.multipart.support.MissingServletRequestPartException”,”message”:”Required request part ‘file’ is not present”,”path”:”/excel/import/upload”}
---------------------
我錯誤的原因和解決方法:
主要是由於前臺傳遞mutipartFile,表單的名字是file,但是再feign呼叫的時候我使用的是requestPart(“file”). 因此無法傳遞。
修改前端表單的檔名為file
問題二:
400 bad request: Required request part ‘file’ is not present
猜測通過@RequestParam(value = “file”, required = false)這種方式來取參的話,file欄位就是可選的了。
這個錯誤大概是說沒有file這個欄位,而這個欄位又是必須的,即使用了註釋,如下面
@RequestParam("file") MultipartFile file
那麼就需要我們去檢查下前端頁面是否存在這個欄位了
問題三:
org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found
不手動新增content-type後就行了:此時訪問成功,去掉訊息頭多餘的新增
------------------------------------------------------------------------------------------------------------分割線---------------------------------------------------------------------------------------------------------------------------
三、jmeter下載檔案。
3.1準備工作:
圖片的url是:http://a.hiphotos.baidu.com/image/pic/item/4b90f603738da977b1e8c6c7ba51f8198718e313.jpg
3.2編寫指令碼流程
首先新增一個執行緒組,然後線上程組裡面新增一個http請求,因為是獲取資料,所有是get請求,寫好下載的地址
1、新增執行緒組:右鍵測試計劃,新增-Threads(Users)-執行緒組;
2、新增一個http請求:右鍵執行緒組,新增-Sampler-HTTP請求;
3、寫好http請求中的url和路徑;
4、新增beanshell,獲取到返回的檔案內容,儲存到一個檔案裡面。右鍵執行緒組,新增-Sampler-BeanShellSampler,beanshell程式碼如下:
importjava.io.*; byte[]result=prev.getResponseData();//這個是獲取到請求返回的資料,prev是獲取上個請求的返回 Stringfile_name="C:\\Users\\bjniuhanyang\\Desktop\\BaiDu.jpg";//代表存放檔案的位置和檔名 Filefile=newFile(file_name); FileOutputStreamout=newFileOutputStream(file); out.write(result); out.close();
5、新增一個檢視結果樹,檢視介面呼叫結果。右鍵執行緒組,新增-監聽器-檢視結果樹;
3.3 指令碼例項
協議:http
伺服器名稱:a.hiphotos.baidu.com
埠號:80 (提示,埠號預設是就是80,可以不用寫哦)
請求型別:get
路徑:/image/pic/item/4b90f603738da977b1e8c6c7ba51f8198718e313.jpg
指令碼截圖如下
下面這個是beanshell裡面的內容,也就是咱們儲存檔案的操作。
3.4 執行指令碼,檢視結果
看下面的圖,執行結果,已經可以看到剛才這張圖片了,而且請求都是成功的。
咱們再去桌面上看,檔案已經存在F盤根目錄下了
以上就是利用jmeter實現上傳下載操作啦,感興趣的同學可以自己動動手練習下