前言

文件上传在我们软件是不可少的,最多的使用是体现在我们后台,当然我们前台也会有。但是了解过怎样上传文件吗?这篇我们以禅道文档-创建文档,上传文件为例。

post请求中的:Content-Type:multipart/form-data  这种类型便是上传文件。

一、环境安装、抓包分析

1、pip install requests_toolbelt,post请求 multipart/form-data  类型

C:\Users\Administrator>pip install requests_toolbelt

Requirement already satisfied: requests_toolbeltin d:\path_python\lib\site-packages (0.9.1)

Requirement already satisfied: requests<3.0.0,>=2.0.1 in d:\path_python\lib\site-packages (from requests_toolbelt) (2.20.1)

Requirement already satisfied: chardet<3.1.0,>=3.0.2 in d:\path_python\lib\site-packages (from requests<3.0.0,>=2.0.1->requests_toolbelt) (3.0.4)

Requirement already satisfied: certifi>=2017.4.17 in d:\path_python\lib\site-packages (from requests<3.0.0,>=2.0.1->requests_toolbelt) (2019.6.16)

Requirement already satisfied: idna<2.8,>=2.5 in d:\path_python\lib\site-packages (from requests<3.0.0,>=2.0.1->requests_toolbelt) (2.7)

Requirement already satisfied: urllib3<1.25,>=1.21.1 in d:\path_python\lib\site-packages (from requests<3.0.0,>=2.0.1->requests_toolbelt) (1.24.3)

2、先抓下登录接口,因为先登录成功后才能上传文件。写上登录代码,让其能正常登录。

importrequests

s=requests.session()

login_url= 'http://127.0.0.1/zentao/user-login.html' #登录url

data = 'account=admin&password=e10adc3949ba59abbe56e057f20f883e&keepLogin%5B%5D=on&referer=http%3A%2F%2F127.0.0.1%2Fzentao%2Fdoc-browse-1-byModule-0-id_desc-doc.html'login_r= s.post(login_url, params=data) #传 params 参数

r1= s.get('http://127.0.0.1/zentao/doc-browse-1-byModule-0-id_desc-doc.html') #登录访问的 html

print(r1.content.decode('utf-8'))

2、操作上传文件(文件我就上传一个桌面的:test.png),fiddler 切换至WebForms就看得比较清楚了。

二、写python代码请求

1、将抓包的接口写下,顺序:调试登录、上传、检查点。

2、也需导入模块from requests_toolbelt import MultipartEncoder

3、MultipartEncoder 传的参数注意,特别是图片参数,这里list里面元组:fields=[(name,value), (name2, value)]

4、禅道文件上传代码参考如下:

from requests_toolbelt importMultipartEncoderimportrequests#登录

s =requests.session()

login_url= 'http://127.0.0.1/zentao/user-login.html'data= 'account=admin&password=e10adc3949ba59abbe56e057f20f883e&keepLogin%5B%5D=on&referer=http%3A%2F%2F127.0.0.1%2Fzentao%2Fdoc-browse-1-byModule-0-id_desc-doc.html'login_r= s.post(login_url, params=data) #传 params 参数

#断言是否登录成功

r1 = s.get('http://127.0.0.1/zentao/doc-browse-1-byModule-0-id_desc-doc.html')if '产品主库' in r1.content.decode('utf-8'):print('登录成功')else:print('登录失败')#文件上传保存#传参数,name 对应 value,注意图片路径的填写。为空的一些参数不影响的去前提下可以删除。

s_url = 'http://127.0.0.1/zentao/doc-create-1-0.html'body=MultipartEncoder(

fields=[

('lib', '1'),

('uid', '5dec436e32b85'),

('module', '0'),

('title', '我的一个title'),

('type', 'text'),

('contentType', 'html'),

('files[]', ('test.png', open('C:\\Users\\Administrator\\Desktop\\test.png', 'rb'), 'image/png'))

])

r2= s.post(s_url, data=body, headers={'Content-Type': body.content_type}) #Content-Type 自动获取

#检查是否成功上传图片

res = s.get('http://127.0.0.1/zentao/doc-browse-1.html')if '我的一个title' in res.content.decode('utf-8'):print('已上传成功')else:print('上传失败')

5、python控制台说“已上传成功”,但是我们首次执行最好还是肉眼看一下有没有问题。(下图显然没有问题)

但说到这里,不得不说这只是一次的测试请求,但是以后迭代,无数次回归咋办呢?这个问题和我们手工操作是一样的,好比如你想title每次都一样,但是只能存在一条数据。

那么就可以①逻辑删除:操作删除按钮、物理删除:连接数据库执行删除语句。欢迎来QQ交流群:482713805

python调用接口上传文件_python接口自动化7-post文件上传相关推荐

  1. python 调用js点击悬浮_python UI自动化9- 鼠标悬浮事件

    鼠标悬浮事件 如上图,下拉选项需要鼠标悬浮在"一站培训",才会出现. 下面简单介绍下,鼠标悬浮事件用法: 栗子: 鼠标悬浮"一站培训",并点击进入"微 ...

  2. 已解决Python调用免费申请的百度图形识别接口案例

    已解决Python调用免费申请的百度图形识别接口{'error_code': 18, 'error_msg': 'Open api qps request limit reached'} 文章目录 报 ...

  3. python编写请求参数带文件_python requests 库请求带有文件参数的接口实例

    有些接口参数是一个文件格式,比如fiddler 抓包参数如下显示 这个接口的 form-data fiddler 显示的和不带文件参数的接口有明显区别,显示的不是简单的键值对,所以我们也不能只通过 d ...

  4. python caffe 训练自己的模型_python接口调用已训练好的caffe模型测试分类方法

    训练好了model后,可以通过python调用caffe的模型,然后进行模型测试的输出. 本次测试主要依靠的模型是在caffe模型里面自带训练好的结构参数:~/caffe/models/bvlc_re ...

  5. python调用java之Jpype实现java接口

    python实现java接口 概述 java程序 java接口 java测试函数 在python中实现java接口的两种方式 第一种:JImplements JImplements的使用示例 JImp ...

  6. python上传文件到windows_python自动化-WinSpy+pywin32文件上传操作

    '''百度首页搜索上传图片为例''' #前提条件 1.使用winspy定位绝对路径 #前提条件 2.安装库pywin32 采用pip安装pip install pywin32 或其他途径安装 #1.访 ...

  7. python autoit获取网页ajax数据_WebDriver + Python 调用AutoIt例子(实现139邮箱写信页的附件上传)...

    PS: 前提 1. 安装好webdriver下python实现的环境 2. 安装好Autoit(默认安装就可以了) 3. 另外需要一个139邮箱账号,脚本运行时上传的图片在附件里面 #coding:c ...

  8. python接口自动化测试面试题_Python 接口自动化测试实战

    Python接口自动化测试实战 简介 本课程主要围绕Python相关库再服务端接口自动化测试中的应用展开介绍,重点讲解接口自动化基础.编写接口自动化脚本.框架原理.项目实战,此外还扩展介绍多用例管理与 ...

  9. python接口编程的好处_python接口自动化测试

    mock简介 py3已将mock集成到unittest库中 为的就是更好的进行单元测试 简单理解,模拟接口返回参数 通俗易懂,直接修改接口返回参数的值 mock作用 解决依赖问题,达到解耦作用 当我们 ...

  10. python调用matlab需要的库_python调用matlab文件

    python和matlab在计算机各具优势,最近在研究一个文字识别的小程序.同时用到matlab和python,matlab负责图片的前期处理,python负责图片的文字识别,需要相互调用.我尝试了很 ...

最新文章

  1. MySQL Xtrabackup备份和恢复
  2. 揭示生命的奥秘——生物信息学
  3. 单细胞RNA降维之UMAP
  4. 如何查看,当运行一个hibernate 方法后到底执行了哪些SQL语句
  5. python文件打开方式详解
  6. 【Android 插件化】Hook 插件化框架 ( 反射工具类 | 反射常用操作整理 )
  7. toFixed()方法
  8. 前端面试题整理(js)
  9. 将ocx和DLL文件打包成cab文件,inf的编写
  10. SQL查询重复记录,删除重复记录
  11. ftok() Linux Linux函数
  12. data transformation python_Data augmentation: 利用python进行图像扩建
  13. python中字符串怎么引用_如何在字符串中引用函数参数
  14. 高三计算机专业vb试题二答案,高三计算机专业VB试题(二)
  15. winpcap/npcap 提高抓包效率 发UDP包失败
  16. RQNOJ 34 紧急援救 解题报告
  17. 深度学习实战 2 YOLOv5 添加CBAM、CA、ShuffleAttention注意力机制
  18. 大数据要学javaweb吗_自学java大数据可以找到工作吗?该怎么学?
  19. emcc生成wasm,wast,bc文件的方法
  20. 数字藏品APP系统开发|数字藏品系统

热门文章

  1. 20-10-032-安装-KyLin-2.6.1-单机版安装(MAC官网下载)
  2. 95-235-040-源码-task-Flink 对用户代码异常处理
  3. spark学习-Spark性能调优(1)
  4. 《spring-boot学习》-11-定时任务
  5. Solr如何管理索引库
  6. 2008服务器维护,Windows 2008 R2 服务器维护
  7. mysql传数据到微信小程序_微信小程序直播 数据同步与转存
  8. Mac下安装virtualenvwrapper提示ERROR: No matching distribution found for pbr
  9. 深度优先搜索之在图上寻找路径
  10. 软件测试-验收测试与回归测试