最近用JMeter做接口測試,頻繁遇到了文件上傳的接口,與其他一般接口的處理方式不一樣,想著分享下,希望能給測試同學一點啟發。
文章將圍繞三個部分進行展開:
一、用戶場景
二、接口請求參數
三、JMeter腳本編寫步驟
四、JMeter腳本執行
一、用戶場景
有一個新建用戶憑證頁面,填寫字段信息,上傳圖片文件,點擊提交,即新建成功。
這個步驟包含兩個接口,一個上傳圖片文件接口,返回一個路徑字段值,在新建憑證接口的請求參數中帶上路徑,即可新建成功。
實現腳本的基本思路就是先調用上傳接口,利用JSON提取器將返回的路徑字段值提取出來,存在一個變量${get_picture_url}中,再調用新建接口,直接將路徑變量的值賦給請求參數attachUrl。
二、接口請求參數
1、文件上傳接口
對于文件上傳類的接口,注意觀察Request Headers的Content-Type,值為:multipart/form-data
請求體,參數為file
響應值,返回上傳文件的路徑信息,即data字段的值
2、新建用戶憑證接口
Request Headers的Content-Type,值為:application/x-www-form-urlencoded
請求體,參數為有6個,主要關注attachUrl,這個參數是上傳接口返回字段data的值
響應值,新建成功則返回success
三、JMeter腳本編寫步驟
一)上傳接口腳本編寫
1、添加一個線程組:財務管理
2、添加一個簡單控制器
加不加都不重要,主要是為了規范腳本,使腳本更便于閱讀,一般是一個簡單控制器下一個http請求
3、添加http請求
協議,服務器名稱,請求方法,請求路徑等照常填寫,但是要勾選 Use multipart/form-data for POST,如果還有其他參數,直接在Parameters里面照常填寫,示例中的接口沒有,就不寫了
切換至File Upload,填寫上傳文件信息
文件名稱:寫本地的上傳文件路徑即可(注意,腳本部署到Linux服務器上時,注意切換路徑)
參數名稱:填寫文件路徑的參數名稱,示例中的參數是file
MIME類型:multipart/form-data
4、添加響應斷言
根據實際接口填寫即可
5、添加JSON提取器
Names of Created variables:作為引用的變量名稱,多個變量名通過分號;隔開,自定義
JSON Path expessions:格式為 . (層級名稱),本次示例即為 .(層級名稱),本次示例即為 .(層級名稱),本次示例即為.data
Match No.:取第幾個數值,0代表隨機,-1代表取全部數組數據,1代表取一個變量數值,與設置的變量名稱有關,本次示例填-1(說明:如果填寫1,后面引用變量的時候直接用 g e t p i c t u r e u r l 即可,如果填寫 ? 1 ,返回的是一個數組,后面引用變量的時候要用 {get_picture_url}即可,如果填寫-1,返回的是一個數組,后面引用變量的時候要用 get
p
??? ?
?icture
u
??? ?
?rl即可,如果填寫?1,返回的是一個數組,后面引用變量的時候要用{get_picture_url_1},${get_picture_url_2}的形式)
Compute concatenation var(suffix_ALL):匹配到的所有數值并保存,默認為空即可
Default Value:取值失敗時展示的內容,默認為空即可
二)新建用戶憑證接口
1、添加一個簡單控制器
加不加都不重要,主要是為了規范腳本,使腳本更便于閱讀,一般是一個簡單控制器下一個http請求
二)新建用戶憑證接口
1、添加一個簡單控制器
加不加都不重要,主要是為了規范腳本,使腳本更便于閱讀,一般是一個簡單控制器下一個http請求
3、添加http請求
協議,服務器名稱,請求方法,請求路徑等照常填寫,不需要勾選 Use multipart/form-data for POST,attachUrl參數,直接將變量${get_picture_url_1}的值賦給attachUrl
File Upload也不用填寫任何信息了
4、添加響應斷言
根據實際接口填寫即可
四、JMeter腳本執行
執行腳本,除了查看結果數,看接口全部執行成功外,還要去頁面看新建的用戶憑證詳情中,上傳圖片是否成功。
今天在調試過程中發現,即使新建用戶憑證接口的路徑不正確,也能成功新建用戶憑證,只不過在查看詳情的時候,圖是裂的,就像這種效果,所以即使腳本調通了,也要去頁面看看,圖片是不是真的上傳成功了。
這樣,一個完整的接口上傳腳本就成功了。
最后感謝每一個認真閱讀我文章的人,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:
這些資料,對于【軟件測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴上萬個測試工程師們走過最艱難的路程,希望也能幫助到你!