python接口测试上传文件_Python接口自动化测试之文件上传(二十二)

在接口测试中,经常会涉及到文件上传,文件上传一般包含的文件是图片,视频以及如csv,excel,记事本等文件,它的请求头中Content-Type对应的value值是multipart/form-data,这里依据实际的案例来说明文件上传的具体案例。这里以互联网产品人人网为案例,人人网上传成功后,在个人的主页,上传图片,见上传图片的请求参数如下图所示:

见图片上传请求头的信息如下图所示:

在上传文件的请求参数中,其它参数都比较好处理,文件的这部分,必须要指定文件的路径,文件的Content-Type类型,其实可以在Raw中可以看到,见如下图所示:

那么文件部分的请求参数具体就为:

files = {"file":("wx.jpg",open("c:/wx.jpg","rb"),"image/jpeg",{})}

这地方特别需要强调的是file其实就是请求参数中的file,必须与请求参数中的参数名称一一对应,在请求头中cookie比较很好处理,直接在登录成功后,获取到r.cookies并且把该内容返回。那么文件上传的完整业务流是先登录系统,登录成功后再进行上传文件,见实现的全部源码:

#!/use/bin/env python#coding:utf-8#Author:WuYaimportrequests

defloginData():

data = {

'email': '13484545195','icode': '','origURL': 'http://www.renren.com/home','domain': 'renren.com','key_id': 1,'captcha_type': 'web_login','password': '8d9a71152919613bbe3df9bfa0e1b390eb2b13dd1bdde270c2816cf04dd1b7c5','rkey': 'b4cdc6acc1d36171e3de73dd4676208e','f': 'http%3A%2F%2Fname.renren.com%2F'}

returndata

deflogin():

r = requests.post(

url='http://www.renren.com/ajaxLogin/login?1=1&uniqueTimestamp=201894216799',data=loginData(),headers={'Content-Type': 'application/x-www-form-urlencoded'})

returnr.cookies

defuploadData():

data = {

"upload": "提交","__channel": "renren","privacyParams": '{"sourceControl": 99}','hostid': '967004081','requestToken': '-1124080368','_rtk': '88c0e36a'}

returndata

defupload():

r = requests.post(

url='http://upload.renren.com/upload.fcgi?pagetype=addpublishersingle&hostid=967004081&''callback=window.parent.handlePhotoData&uploadid=profile_publisher_photo_1540215890321',data=uploadData(),headers={'Conteny-Type': 'multipart/form-data'},files={"file": ("wx.jpg",open("c:/wx.jpg","rb"),"image/jpeg",{})},cookies=login())

print(r.status_code)

print(r.text)

if__name__ == '__main__':

upload()

如您对我写的内容感兴趣,关注本人的公众号,谢谢!!!

关注我,关注测试

                        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值