一文通透,Python接口自动化测试实战文件上传场景(超详细)


前言

接口说明

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

Python接口自动化测试:https://www.bilibili.com/video/BV16G411x76E/

接口入参

参数名 参数类型 说明
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这一栏进行填写就好了,要注意的点就是上传文件的参数,要选择文件类型,然后再对应参数值那一栏选择对应的文件即可,点击请求,服务器返回了上传成功的相关信息,详细操作如下图:

请添加图片描述

Python+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": "xxxxxx",
    "age": 18,
    "sex": "男",
}

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

import requests


# 如何请求文件上传的接口
url = "http://127.0.0.1:5000/upload"

# 上传的文件参数
files = {
    
    
    "pic": ("test01.gif", open("test01.gif", "rb"), "images/git")
}
# 其他的参数
data = {
    
    
    "nickname": "xxxxxx",
    "age": 18,
    "sex": "男",
}
# 发送请求
response = requests.post(url=url, files=files, data=data)
# 打印结果
print(response.json())

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

{
    
    
 'code': 1, 
 'data': {
    
    
     'age': '18', 
     'datetime': 'Fri, 13 Mar 2020 10:32:24 GMT', 
     'filename': 'test01.gif', 
     'name': 'xxxxxx', 
     'sex': '男'}, 
 'msg': '文件上传成功,文件保存的地址为:http://127.0.0.1:5000/images/test01.gif'
}
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

生命是一场旅程,我们要勇敢前行,战胜自己的恐惧和犹豫。只有不断超越自我,才能创造更广阔的未来,成为更好的自己。

每个人都有自己的梦想,但只有拥有坚定的信念和不断奋斗的精神,才能最终实现它们。相信你的内心,勇敢前行,你一定会创造出属于自己的辉煌。

生命没有终点,只有不断前行的起点。无论身处何方,只要心中有梦想,就要勇敢追求,坚定信念,努力拼搏,直到抵达彼岸,实现自己的人生价值。

猜你喜欢

转载自blog.csdn.net/m0_70102063/article/details/129839471