接口测试中,上传文件的测试场景非常常见。例如:上传头像(图片)、上传文件、上传视频等。下面以一个上传图片的例子为大家讲解如何通过 python 测试上传文件接口。
首先通过抓包分析上传文件接口的请求参数:
下面是上传文件接口脚本。把目标文件以open打开,然后存储到变量file。并且使用files参数指明请求的参数名称、上传文件的类型、以及上传文件的路径。
这里注意:content-type参数,如果我们通过form-data的方式上传文件,我们发送post请求的时候,headers这个参数中一定不能要包括这个值,,requests库会帮忙添加这个元素,加了可能会报错。
代码实现:
import requests from utils.LogUtil import my_log from faker import Faker log=my_log() faker = Faker(\'zh_CN\') class marketCreate(): def loginToken(self,mobile,code): \'\'\' 登陆、注册接口 :param mobile: 手机号 :param code: 验证码 :return: \'\'\' url=\'http://api.xxxxxx.net/v1/user/loginOrRegister\' #登陆接口请求地址 headers={\'Content-Type\': \'application/json\'} #请求头信息,json数据类型 json={\"code\":code,\"deviceId\":\"5de548ad0e268bc0\",\"deviceName\":\"HWNXT\",\"mobile\":mobile,\"mobilePrefix\":\"63\",\"version\":\"39\"} #请求数据 r=requests.post(url,headers=headers,json=json) #发送请求 token=r.json()[\'data\'][\'userVO\'][\'token\'] #获取token log.info(\'手机号\'+mobile+\'的token值为:\'+token) #打印日志 return token #将token返回出去 def uploadimages(self,mobile,file_path,filename): \'\'\' 上传图片接口 :param mobile: 手机号 :param file_path: 文件路径 :param filename: 文件名称 :return: \'\'\' token = self.loginToken(mobile=mobile, code=\'789789\') #请求登陆接口,获取token url=\'http://api.xxxxxx.net/v1/upload/images\' #上传文件接口请求地址 headers={\'token\': token} #请求头信息关联token。不需要赋值Content-Type,requests库会帮忙添加这个元素,加了可能会报错。 file_data={\'file\':(filename,open(file_path,\'rb\'),\'image/jpeg\')} #重点:上传文件请求数据。 r=requests.post(url=url,headers=headers,files=file_data) #发送请求 print(r.json()) #打印响应结果 if __name__ == \'__main__\': m=marketCreate() # 测试,输入手机号、文件地址、文件名称信息; m.uploadimages(mobile=\'639266558329\',file_path=\'D:\\pyCharm_work\\cmkjProject\\data\\market.jpg\',filename=\'123456.jpg\')
执行结果:
C:\\Python38\\python.exe D:/pyCharm_work/cmkjProject/page/marketPage.py 2020-01-02 13:48:09,580-D:\\pyCharm_work\\cmkjProject\\utils\\LogUtil.py-INFO-手机号639266558329的token值为:ba9b4f622fa4d6461523870c0d00df46 {\'code\': 0, \'data\': \'/group1/M00/00/00/rBDKPF4NhE-ABIFmAAGhT9tm-NA158.jpg\', \'success\': True} Process finished with exit code 0
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自学编程网。