Python接口测试,requests库的post请求进行文件上传

前言

如果需要发送文件到服务器,比如上传图片、视频等,就需要发送二进制数据。

一般上传文件使用的都是 Content-Type: multipart/form-data; 数据类型,可以发送文件,也可以发送相关的消息体数据。

POST一个多部分编码(Multipart-Encoded)的文件

使用 requests 上传文件的基本步骤

  1. 构造文件数据,通过 open 函数以二进制方式打开文件
  2. 构造相关数据
  3. 发送请求,将文件数据以  files  参数传入,其他消息体数据通过  data 、json 、 headers 、 cookies 传入
 1 url = ‘http://httpbin.org/post‘  # 上传文件接口
 2 files = {
 3     ‘file‘: (‘test.png‘,  # 文件名称
 4              open(‘../file/test.png‘, ‘rb‘),  # 文件路径
 5              ‘image/png‘,  # 文件类型
 6              {‘Expires‘: ‘0‘}  # 其他参数,非必传
 7              )
 8 }  # => 打开上传文件并且加入文件相关参数
 9
10 data = {
11     "name": "test"
12 }
13
14 # data传入请求参数dict,files传入待上传文件参数dict
15 r = requests.post(url, data=data, files=files)
16 print(r.json())

注意

files字典里的  ‘file‘ 键是根据上传组件的name属性来改变的,不一定是file;

如下图上传组件,当你上传一张图片时,抓包可以发现会传两个值,一个是fileField,一个是type,所以你的文件数据dict要包含 fileField 和 type 两个key

1     files = {
2         ‘fileField‘: (‘test.png‘,  # 文件名称
3                       open(‘../file/test.png‘, ‘rb‘),  # 文件路径
4                       ‘image/png‘,  # 文件类型
5                       {‘Expires‘: ‘0‘}  # 其他参数,非必传
6                       ),
7         ‘type‘: 1
8     }  # => 打开上传文件并且加入文件相关参数


原文地址:https://www.cnblogs.com/poloyy/p/12232541.html

时间: 2024-08-07 02:31:56

Python接口测试,requests库的post请求进行文件上传的相关文章

【技术博客】Postman接口测试教程 - 环境、附加验证、文件上传测试

Postman接口测试教程 - 环境.附加验证.文件上传测试 v1.0 作者:ZBW 前言 继利用Postman和Jmeter进行接口性能测试之后,我们发现Postman作为一款入门容易的工具,其内置的一些高级功能足够帮助我们对网站进行全面的接口测试.本文首先将介绍两个比较关键的功能:环境(Environment)和附加代码(Pre-request Script和Tests),这两个功能能够帮助我们对接口进行更加复杂的验证,如验证接口返回的信息等.除此之外,本文还将介绍文件上传测试的运行方式.

Python接口测试——Requests库进阶应用

cookie设置 设置Cookie import requests cookie = {'hero': 'alix'} r_cookie = requests.get(base_url + '/cookies', cookies= cookie) print(r_cookie.text) 运行结果 { "cookies": { "hero": "alix" } } 获取cookie 请求百度首页,然后获取cookie,实现如下: r = requ

selenium2 python自动化测试之利用AutoIt工具实现本地文件上传

本人在学习基于python语言的selenium2自动测试方法的过程中,发现涉及本地上传文件的测试时,selenium2在定位本地window窗口的对象(元素)上能力有限.当上传按钮使用的是input标签时,可以使用send_keys()方法添加本地文件路径轻松实现,但有的上传控件使用的不是input元素,这个时候send_keys()方法是行不通的.经过网上搜索加上自己实践,总结出一个非常简单而有效的方法--借用AutoIt工具实现自动化本地上传文件,在此与大家分享. 1.AutoIt介绍及安

使用HttpClient 发送 GET、POST(FormData、Raw)、PUT、Delete请求及文件上传

httpclient4.3.6 package org.caeit.cloud.dev.util; import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; import java.util.Map;

Android 普通okhttp、okhttp utils执行 post get请求,文件上传下载、请求图片

public class OKHttpActivity extends Activity implements View.OnClickListener { public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8"); /** * get请求 */ private static final int GET = 1; /** * post请求 */ private stat

Python接口测试——Requests库的基本使用

Requests安装 使用pip安装命令: pip install requests 打开cmd,输入python然后导入requests如果安装成功没有任何提示 如果提示如下则说明安装失败 ImportError: No module named 'requests' Requests 基础应用 发送不同类型HTTP请求 requests库内置了不同的方法来发送不同类型的http请求,用法如下所示: import requests base_url = "http://httpbin.org&

multipart/form-data请求与文件上传

要上传文件,需要用post方法,并且设置enctype为multipart/form-data. <form action="/upload" method="post" enctype="multipart/form-data"> <input type="text" name="param1"> <input type="text" name="

Abp Zero AJAX请求(文件上传)出现400 bad request 错误问题解决

使用abp框架,使用了Zero模块.再使用Element ui进行上传图片.出现400 bad request错误请求. 用postman传数据到接口时正常工作的. 经过几经波折,终于找到问题是nati token的问题. https://forum.aspnetboilerplate.com/viewtopic.php?f=5&t=10025&sid=5b3ace20a25195168c29846975df630d 因为element ui 不是abp的部分.他使用的ajax请求没有包含

Python实现简单的HTTP服务器(支持文件上传下载)

1.python内置模块 SimpleHTTPServer  (支持下载功能) 在对应的工作目录下,运行命令python -m SimpleHTTPServer 即可把当前目录下以共享服务的形式共享出去. 外部访问可通过访问:http://ip:端口号来访问  (默认端口为8000) 可指定端口: python -m SimpleHTTPServer 8081 2.Woof模块 http://www.home.unix-ag.org/simon/woof.html 3.Droopy模块  (支持