前言

滴滴滴! 今天聊聊接口自动化,遇到文件上传的接口怎么去测试。

近期也有不少的小伙伴在工作中遇到了文件上传的接口,表示不知道应该如何去传递文件上传的参数。

为了帮大家解决这个疑惑,我这边特地写了一个文件上传的接口,那么接下来我们结合这个接口给大家来讲讲解决方案。

 

 

接口说明

接口地址:http://127.0.0.1:5000/upload(注:老师自己写的一个接口,运行在本地)
请求方法:POST
请求类型:Content-Type: multipart/form-data;
响应类型: Content-Type:application/json
接口入参

参数名

参数类型

说明

nickname

string

用户昵称

age

int

年龄

sex

string

性别

pic

file(文件)

上传的文件

出参(返回值)

字段名

类型

说明

code

int

业务码(1代表上传成功,0代码上传失败)

data

obj

相关的数据信息

msg

string

相关的描述信息

返回参考示例:

{
    "code": 1,
    "data": {
        "age": "456",
        "datetime": "Thu, 12 Mar 2020 16:22:57 GMT",
        "filename": "handle_sign.py",
        "name": "123",
        "sex": "男"
    },
    "msg": "文件上传成功,文件保存的地址为:http://127.0.0.1:5000/images/handle_sign.py"
}

针对上面的接口文档简要的说明一下:

该接口需要四个参数,其中一个是用来接收上传的文件的,看上去和其他的接口并没有什么不一样的,返回的数据是json类型的;

关于文件上传接口,需要我们引起注意的一个地方就是:

请求参数类型都是Content-Type: multipart/form-data;

那么这种类型的参数,我们在发送请求的时候要特别注意!他

传参的方式和其他参数类型是不一样的。接下来我们分别使用postman和python来请求这个接口。

 

 

使用postman上传文件

使用postman来上传文件,操作起来比较简单。

关于接口参数直接选择form-data这一栏进行填写就好了,要注意的点就是上传文件的参数,要选择文件类型,然后再对应参数值那一栏选择对应的文件即可,点击请求,服务器返回了上传成功的相关信息,详细操作如下图:

 

 

 

 

使用requests模块来上传

前面我们已经成功的使用了postman来上传文件,那么我们在使用python去做接口自动化的时候,如何来解决这个文件上传的问题呢?

在python中关于发送http请求,我们通常都会使用requets模块,那么接下来我们就使用requests模块来上传文件。

requests模块发送post请求直接调用post方法就可以了,那么关于文件上传这里传参的时候要特别注意,

requests传参类型:

requests模块传参有四种方式:params、data,、json和files。接下来给大家详细讲解一下requests模块中这几种传参方式的区别。

  • parmas: 传递查询字符串参数(常用于get请求)
  • data: 传递表单类型的参数(参数类型为:Content-Type:application/x-www-form-urlencoded)
  • json: 传递json类型的参数(参数类型为:Content-Type:application/json)
  • files: 用于上传文件(参数类型: content-type:multipart/form-data;)

 

上传文件的的接口参数的类型为content-type:multipart/form-data,那么我们使用requests来发送请求的时候,接口中文件上传的参数需要使用files来传递。files参数格式如下

# fiels为字典类型数据,上传的文件为键值对的形式,参数名作为键,
# 参数值是一个元组,内容为以下格式(文件名,打开的文件流,文件类型)
files = {
    "pic": ("test01.gif", open("test01.gif", "rb"), "images/git")
}
# 注意点:除了上传的文件,接口其他参数不能放入files中

文件上传的参数准备好了,那么接口中其他的参数怎么处理呢?其他的参数使用data传递即可。参数组织如下:

# 其他的参数
data = {
    "nickname": "木森",
    "age": 18,
    "sex": "男",
}

参数都准备好了,那么接下来就可以发送请求了,完整的请求代码如下:

python 文件上传校验 python文件上传接口_python 文件上传校验

1 """
 2 ============================
 3 Author:柠檬班-木森
 4 Time:2020/3/13   13:40
 5 E-mail:3247119728@qq.com
 6 Company:湖南零檬信息技术有限公司
 7 ============================
 8 """
 9 
10 import requests
11 
12 # 如何请求文件上传的接口
13 url = "http://127.0.0.1:5000/upload"
14 
15 # 上传的文件参数
16 files = {
17     "pic": ("test01.gif", open("test01.gif", "rb"), "images/git")
18 }
19 # 其他的参数
20 data = {
21     "nickname": "木森",
22     "age": 18,
23     "sex": "男",
24 }
25 # 发送请求
26 response = requests.post(url=url, files=files, data=data)
27 # 打印结果
28 print(response.json())

python 文件上传校验 python文件上传接口_python 文件上传校验

 

运行以上代码,结果如下:

python 文件上传校验 python文件上传接口_python 文件上传校验

{
 'code': 1, 
 'data': {
     'age': '18', 
     'datetime': 'Fri, 13 Mar 2020 10:32:24 GMT', 
     'filename': 'test01.gif', 
     'name': '木森', 
     'sex': '男'}, 
 'msg': '文件上传成功,文件保存的地址为:http://127.0.0.1:5000/images/test01.gif'
}

python 文件上传校验 python文件上传接口_python 文件上传校验

 

PS:很神奇有木有,上传成功了,附上一张图