我们在做接口测试的时候肯定会遇到一些上传图片,然后进行校验,今天我们一起学习通过requests上传图片,查看是否上传成功
抓取上传接口
这里我以百度为例子进行操作,为啥要用百度呢,主要上传文件比较简单不用登录啥的~~~通过fiddler抓取上传图片的接口地址以及请求携带的参数内容
通过下面操作进行选择图片进行上传,然后通过fiddler进行分析接口内容
通过分析抓取的内容,我们可以看到接口地址为:“https://graph.baidu.com/upload”
请求的参数类型为from-data,这个类型后面会具体的介绍,这里先不具体说了,这里不影响我们操作
参数格式
这里在插个知识点,就是requests文档中有对上传文件单独书写,我们可以按照他们的标准进行书写详细的可以进行查看requests官方文档
参数书写情况为:
# 123.jpg为图片,与代码在当前目录下,image/jpeg 为图片格式 files = { "tn":"pc", "image":("123.jpg",open('123.jpg','rb'),"image/jpeg"), "from":"pc", "image_source":"PC_UPLOAD_SEARCH_FILE", "range":'{"page_from": "searchIndex"}' }
请求上传图片
选择图片
# coding:utf-8 import requests url = "https://graph.baidu.com/upload" files = { "tn":"pc", "image":("123.jpg",open('123.jpg','rb'),"image/jpeg"), "from":"pc", "image_source":"PC_UPLOAD_SEARCH_FILE", "range":'{"page_from": "searchIndex"}' } r = requests.post(url,files=files) print(r.json())
通过查看返回,点击链接进入到百度识图中
但是当我们点击进去后会发现浏览器好像放大了我们的页面一样,这是什么鬼?哪里出错误了吗?
原来是我们在填写数据的时候数据的格式写错了,有一些参数没有添加,我们要表示为None
# 每个value其实都是有2个参数,只是其中一个没有,那么如果我们不穿的话就会出现刚才的问题,这个是需要传None files = { "tn":(None,"pc"), "image":("123.jpg",open('123.jpg','rb'),"image/jpeg"), "from":(None,"pc"), "image_source":(None,"PC_UPLOAD_SEARCH_FILE"), "range":(None,'{"page_from": "searchIndex"}') }
通过修改后的链接,我们再一次取请求,查看这次的情况,发现是好的,突然感叹到python太强大了~~
通过一个小的例子,我们学习了如何通过requests发送from-data的数据类型,但是如果想要上传大文件,需要安装第3方库,这个我们下次在一起学习~~~持续更新中~~~
如果感觉写的对您有帮助,可以右下角点击个关注哦~~点关注,不迷路。