• 12
  • 12
分享
  • Python requests实现接口上传下载——软件测试圈
  • 曼倩诙谐 2021-12-03 10:50:50 字数 1699 阅读 1453 收藏 12

  前言

  在做接口自动化的过程中经常会遇到上传和下载操作,当我们在web页面上的时候很简单,只需要轻轻一点,但是在接口过程中呢?

  今天安静介绍下如何通过requests来完成上传和下载操作。

  下载操作

  玩过爬虫或者熟悉爬虫的朋友们都应该清楚,这里的下载操作其实就是类似于爬虫。

  不过这个下载更为简单,只需要获取到对应下载的接口地址就行了。这里安静在网上找到一个图片,通过requests请求图片地址,并将其下载到本地。

1-1.png


  编写代码

  首先导入requests库,通过requests来请求图片的url地址,通过content的形式返回图片二进制,并写入文件中。

import requests
url = 'https://seopic.699pic.com/photo/50108/4859.jpg_wh1200.jpg'
r = requests.get(url).content
with open('anjing.jpg','wb')as f:
    f.write(r)

  通过执行就会发现图片已经在本地保存下载成功了。

1-2.png


  上传操作

  在requests中对于上传操作有单独的方法进行使用这个方法是:Multipart-Encoded。

  在官方文档中有介绍其简单的用法,这里请求的数据类型是属于form-data的形式。

1-3.png


  百度上传

  前面介绍了如何通过requests上传的方法,那么我们先找个案例实践下,这里安静拿百度的上传图片的接口,将我们上面下载的图片内容,进行通过百度的接口上传。

  这里先通过Fiddler进行抓取百度的上传接口:

  1、点击图片位置1出的上传按钮

  2、将需要上传的图片拖到或者上传

  3、通过Fiddler进行抓取上传接口

1-4.png


  这里很容易的就通过fiddler抓到了我们需要的上传接口信息了。下图表示的是上传参数信息:

1-5.png


  通过Fiddler中的raw可以获取到接口的请求地址和接口请求信息:

1-6.png


  我们需要的接口信息都已经拿到了,那么我们就可以进行编写代码了。这里需要用到我们上面所介绍的Multipart-Encoded的方法进行上传。

  代码实例

  通过官方的方法和我们抓取到的上传接口,然后通过编写代码进行请求:

import requests
url = "https://graph.baidu.com/upload"
files = {
    "tn":(None,"pc"),
    "image":("anjing.jpg",open('anjing.jpg','rb'),"image/jpeg"),
    "from":(None,"pc"),
    "image_source":(None,"PC_UPLOAD_SEARCH_FILE"),
    "range":(None,'{"page_from": "searchIndex"}'),
    "sdkParams":(None, '{"data":"552db2988a615cc064de60473d84304aba32fe225854e09029ea39f7db5a75030023cf928252f266e62453a37b3bb70f35391b8b9854a5ed171f0a48c5a7164b0a6d1e7284dece5a150bf5453bd692f4","key_id":"23","sign":"0e703e0d"}')
}
r = requests.post(url,files=files)
print(r.json())

  通过执行后,会在返回的json中返回有一段URL地址,当我们打开这个URL地址时,就会发现,我们的图片已经成功的上传了。

1-7.png


  总结

  这里我们就已经通过requests进行了文件的上传和下载操作,当我们读下来后,发现是不是非常的简单。

  小伙伴可以根据公司的项目进行练习,所谓熟能生巧。感谢您的阅读,希望对您有所帮助。



作者:测试安静   

来源:http://www.51testing.com/html/26/n-4480126.html

2021 问卷礼物图.png

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 一、什么是软件测试软件测试是为了发现错误而执行程序的过程,为保证软件质量而采取的措施。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例(输入以及预期的输出结果),并利用这些测试用例去运行程序,以发现程序中的错误。二种思维:正向:验证程序是否正常执行以及是否达到用户预期的需求。反向:为发现错误或缺陷而进行的一系列活动。二、软件测试的目的发现软件缺陷,提高软件质量。以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正错误和缺陷提高软件质量,回避因软件发布后由于潜在的缺陷和错误造成的隐患带来的商业风险。三、什么是需求文档测试需求文档是否符合用户要求、...
            0 0 1464
            分享
          • app性能测试分类:响应内存cpuFPS (app使用的流畅度)GPU过度渲染耗电耗流(app除了这些性能测试,还有:手机版本号兼容性,屏幕分辨率兼容性,稳定性测试,安全测试等,后续会持续更新… 流量测试同这些一起更新,这里就不在说明了 )App性能测试响应点:主要测试点:冷启动:首次启动app的时间间隔(只是启动时间,不包括页面加载)热启动:非首次启动app的时间间隔(只是启动时间,不包括页面加载)完全启动:从启动到首页完全加载出来的时间间隔有网启动:从发起跳转,到页面完全加载出来的时间间隔无网启动:从发起跳转,到页面完全加载出来的时间间隔(在项目中,主要测试关注点是冷启动,热启动)测试标准...
            0 0 1186
            分享
          • 4) 验收测试验收测试是一种测试,客户/业务/客户使用实时业务场景测试软件。只有当所有特性和功能都按预期工作时,客户才接受该软件。这是测试的最后阶段,之后软件将投入生产。这也称为用户验收测试 (UAT)。a) 阿尔法测试Alpha 测试是组织中的团队执行的一种验收测试,目的是在向客户发布软件之前尽可能多地发现缺陷。例如,宠物保险网站在 UAT 下。UAT 团队将以用户使用真实网站的相同方式运行实时场景,例如购买保险单、购买年度会员、更改地址、宠物所有权转移。团队可以使用测试信用卡信息来处理与支付相关的场景。b) Beta 测试Beta测试是一种由客户/客户执行的软件测试。它在将产品发布到市场以...
            0 0 2650
            分享
          • 项目结束之后,我们经常需要组织召开复盘会议,很多同学一听到复盘会议就会紧张,好像按照他们的理解,复盘会议就是为了追责,就会十分恐惧。实际上,复盘会议并不是狭义的如此,复盘其实是为了大家一起交流,互相学习,对于做的不好的地方及时改进。简单拿我们的一个复盘过程举例:一、过程回顾1、本轮测试7天时间,共计XX个bug,其中XX个bug为功能 bug已修复,XX个bug为UI bug已修复,XX个bug遗留(XX个bug产品经理给出具体方案后续优化,XX个为浏览器机制产生的一直存在,前端也一直未给出相应的解决)。XX个界面优化用户体验性问题:二、测试过程出现中的问题bug回归不及时,导致问题修改周期长...
            6 5 7958
            分享
          •   一、产品介绍  共享单车是企业向消费者投放的短程出行设施,主要是用于解决大众运输系统中的“最后一公里”问题,同时也实现了缓解交通阻塞、减低噪音和空气污染的功能。  共享单车主要由普通单车配备 GPS 定位装置、里程计数装置、限速装置等构成,往往带有不同的色彩和产品 logo 等。  二、测试要点  共享单车测试主要从界面测试、安全测试、兼容性测试、易用性测试、压力测试、功能测试和性能测试等几个方面考虑,具体分析见下文。  注:设计测试过程中我认识到一个面面俱到的测试流程需要非常缜密的考虑,由于时间、精力和经验上的限制,在下面给出的具体测试要点中可能存在一些关键点遗漏。对于您指出的不足,我十...
            0 0 3851
            分享
      • 51testing软件测试圈微信