最近很多同學都在問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="F: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盤根目錄下看,檔案已經存在F盤根目錄下了
以上就是利用jmeter實作上傳下載下傳操作啦,感興趣的同學可以自己動動手練習下!(1079636098)軟體測試學習群裡一起讨論交流從此不再孤單。
- End -
如果對python自動化測試、web自動化、接口自動化、移動端自動化、面試經驗交流等等感興趣的測試人,可以關注我。加入我們免費擷取更多軟體測試進階資料!