全网最详细,python接口自动化测试-文件上传案例操作(详全)

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

我们在做接口测试工作时,会遇到含有文件上传的接口。

multipart/form-data类型的上传接口

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

抓到的上传接口的信息大概是以下这样子:
请求体的content-type为:
multipart/form-data; boundary=---------------------------(一堆数字)

全网最详细,python接口自动化测试-文件上传案例操作(详全)_第1张图片

请求体当中,除了有要上传的文件以外,还有其它的数据字段。

在下面的请求体截图当中,含有以下字段:

id: 文件的id
name: 文件的名字
type: 文件的类型。如果是图片则是image/png。若是图中的文本文件,则为application/octet-stream
lastModifiedDate:上一次修改时间。截图中为当前时间点
size: 文件的大小
file: 有文件名、文件类型、文件内容3项内容。

全网最详细,python接口自动化测试-文件上传案例操作(详全)_第2张图片

这样的接口,用requests如何来发送呢?

requests的requests_toolbelt模块处理multipart/form-data
安装requests_toolbelt
pip命令:

pip install requests_toolbelt

导入requests_toolbelt下的MultipartEncoder类

from requests_toolbelt import MultipartEncoder

MultipartEncoder类应用

处理请求体
MultipartEncoder类,有一个fields参数,用来传递请求数据以及文件。

在实例化MultipartEncoder类,传递fields

fields: 字典类型。将请求数据放在此参数中
key为下图中的name的值。下图中的key分别为:id,name,type,lastModifiedDate,size,file

全网最详细,python接口自动化测试-文件上传案例操作(详全)_第3张图片

对于key为file的,它的值为一个元组:(文件名称,文件流对象(binary模式打开文件),文件类型)。

示例:“file”“chromedriver.log”, open(file_path,“rb”), “application/octet-stream”)})

上传文本文件的代码(实例化MultipartEncoder):

filesize = os.path.getsize(file_path)  # 获取文件大小
m = MultipartEncoder(fields={"id":"lemon66",
                             "name":"chromedriver.log",
                             "type":"application/octet-stream",
                             "lastModifiedDate":"Mon Nov 30 2020 20:21:44 GMT+0800 (中国标准时间)",
                             "size":str(filesize),
                             "file":("chromedriver.log",open(file_path,"rb"),"application/octet-stream")})

上传图片的代码(实例化MultipartEncoder):

# 上传文件为图片:图片类型不一样。
file_path = 'D:\\BaiduNetdiskDownload\\lemon_log_1.png'
filesize = os.path.getsize(file_path) # 获取文件大小

m = MultipartEncoder(fields={"id":"lemon66",
                         "name":"xiaojian.png",
                         "type":"image/png",
                         "lastModifiedDate":"Mon Nov 30 2020 20:21:44 GMT+0800 (中国标准时间)",
                         "size":str(filesize),
                         "file":("xiaojian.png",open(file_path,"rb"),"image/png")})

处理请求头的content-type
content-type要包含boundary。MultipartEncoder类定义了属性:content_type。

全网最详细,python接口自动化测试-文件上传案例操作(详全)_第4张图片

我们在代码当中,直接使用它的content-type来设置即可。

m = MultipartEncoder(fields={"id":"lemon66",
                         "name":"chromedriver.log",
                         "type":"application/octet-stream",
                         "lastModifiedDate":"Mon Nov 30 2020 20:21:44 GMT+0800 (中国标准时间)",
                         "size":str(filesize),
                         "file":("chromedriver.log",open(file_path,"rb"),"application/octet-stream")})
# content-type
# m.content_type

# 发送上传文件的请求:
resp = s.post(upload_url,data=m,headers={'Content-Type': m.content_type})
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

全网最详细,python接口自动化测试-文件上传案例操作(详全)_第5张图片

二、接口自动化项目实战

全网最详细,python接口自动化测试-文件上传案例操作(详全)_第6张图片

三、Web自动化项目实战

全网最详细,python接口自动化测试-文件上传案例操作(详全)_第7张图片

四、App自动化项目实战

全网最详细,python接口自动化测试-文件上传案例操作(详全)_第8张图片

五、一线大厂简历

全网最详细,python接口自动化测试-文件上传案例操作(详全)_第9张图片

六、测试开发DevOps体系

全网最详细,python接口自动化测试-文件上传案例操作(详全)_第10张图片

七、常用自动化测试工具

全网最详细,python接口自动化测试-文件上传案例操作(详全)_第11张图片

八、JMeter性能测试

全网最详细,python接口自动化测试-文件上传案例操作(详全)_第12张图片

九、总结(尾部小惊喜)

不要四处乱撞,每天做好一件事,在遇到挫折的时候,坦然微笑地面对生活,这样就可以享受到成功的境界。

成功源于发现细节,没有细节就没有机遇,留心细节意味着创造机遇。一件司空见惯的小事或许就可能是打开机遇宝库的钥匙!

成功需要八个从不:从不放弃梦想,从不懈怠努力,从不遗忘友情,从不疏忽联系,从不错过信息,从不松开坚持,从不迷茫目标,从不三心二意。

你可能感兴趣的:(自动化测试,软件测试,接口自动化,软件测试,接口自动化测试,python自动化测试,自动化测试,测试开发)