Python接口測(cè)試文件上傳實(shí)例解析
接口測(cè)試中,上傳文件的測(cè)試場(chǎng)景非常常見(jiàn)。例如:上傳頭像(圖片)、上傳文件、上傳視頻等。下面以一個(gè)上傳圖片的例子為大家講解如何通過(guò) python 測(cè)試上傳文件接口。
首先通過(guò)抓包分析上傳文件接口的請(qǐng)求參數(shù):
下面是上傳文件接口腳本。把目標(biāo)文件以open打開(kāi),然后存儲(chǔ)到變量file。并且使用files參數(shù)指明請(qǐng)求的參數(shù)名稱、上傳文件的類型、以及上傳文件的路徑。
這里注意:content-type參數(shù),如果我們通過(guò)form-data的方式上傳文件,我們發(fā)送post請(qǐng)求的時(shí)候,headers這個(gè)參數(shù)中一定不能要包括這個(gè)值,,requests庫(kù)會(huì)幫忙添加這個(gè)元素,加了可能會(huì)報(bào)錯(cuò)。
代碼實(shí)現(xiàn):
import requestsfrom utils.LogUtil import my_logfrom faker import Fakerlog=my_log()faker = Faker(’zh_CN’)class marketCreate(): def loginToken(self,mobile,code): ’’’ 登陸、注冊(cè)接口 :param mobile: 手機(jī)號(hào) :param code: 驗(yàn)證碼 :return: ’’’ url=’http://api.xxxxxx.net/v1/user/loginOrRegister’ #登陸接口請(qǐng)求地址 headers={’Content-Type’: ’application/json’} #請(qǐng)求頭信息,json數(shù)據(jù)類型 json={'code':code,'deviceId':'5de548ad0e268bc0','deviceName':'HWNXT','mobile':mobile,'mobilePrefix':'63','version':'39'} #請(qǐng)求數(shù)據(jù) r=requests.post(url,headers=headers,json=json) #發(fā)送請(qǐng)求 token=r.json()[’data’][’userVO’][’token’] #獲取token log.info(’手機(jī)號(hào)’+mobile+’的token值為:’+token) #打印日志 return token #將token返回出去 def uploadimages(self,mobile,file_path,filename): ’’’ 上傳圖片接口 :param mobile: 手機(jī)號(hào) :param file_path: 文件路徑 :param filename: 文件名稱 :return: ’’’ token = self.loginToken(mobile=mobile, code=’789789’) #請(qǐng)求登陸接口,獲取token url=’http://api.xxxxxx.net/v1/upload/images’#上傳文件接口請(qǐng)求地址 headers={’token’: token} #請(qǐng)求頭信息關(guān)聯(lián)token。不需要賦值Content-Type,requests庫(kù)會(huì)幫忙添加這個(gè)元素,加了可能會(huì)報(bào)錯(cuò)。 file_data={’file’:(filename,open(file_path,’rb’),’image/jpeg’)} #重點(diǎn):上傳文件請(qǐng)求數(shù)據(jù)。 r=requests.post(url=url,headers=headers,files=file_data) #發(fā)送請(qǐng)求 print(r.json()) #打印響應(yīng)結(jié)果if __name__ == ’__main__’: m=marketCreate() # 測(cè)試,輸入手機(jī)號(hào)、文件地址、文件名稱信息; m.uploadimages(mobile=’639266558329’,file_path=’D:pyCharm_workcmkjProjectdatamarket.jpg’,filename=’123456.jpg’)
執(zhí)行結(jié)果:
C:Python38python.exe D:/pyCharm_work/cmkjProject/page/marketPage.py2020-01-02 13:48:09,580-D:pyCharm_workcmkjProjectutilsLogUtil.py-INFO-手機(jī)號(hào)639266558329的token值為:ba9b4f622fa4d6461523870c0d00df46{’code’: 0, ’data’: ’/group1/M00/00/00/rBDKPF4NhE-ABIFmAAGhT9tm-NA158.jpg’, ’success’: True}Process finished with exit code 0
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 存儲(chǔ)于xml中需要的HTML轉(zhuǎn)義代碼2. python 浮點(diǎn)數(shù)四舍五入需要注意的地方3. Java GZip 基于內(nèi)存實(shí)現(xiàn)壓縮和解壓的方法4. python開(kāi)發(fā)一款翻譯工具5. 利用CSS制作3D動(dòng)畫(huà)6. jsp+servlet簡(jiǎn)單實(shí)現(xiàn)上傳文件功能(保存目錄改進(jìn))7. Springboot 全局日期格式化處理的實(shí)現(xiàn)8. 完美解決vue 中多個(gè)echarts圖表自適應(yīng)的問(wèn)題9. SpringBoot+TestNG單元測(cè)試的實(shí)現(xiàn)10. PHP實(shí)現(xiàn)簡(jiǎn)單線性回歸之?dāng)?shù)學(xué)庫(kù)的重要性
