接口自动化测试——文件上传/下载

简介: 轻松搞定文件上传接口和文件下载接口。

转载请注明出处❤️

作者:测试蔡坨坨

原文链接:caituotuo.top/9cf3344.html


你好,我是测试蔡坨坨。

我们在做接口自动化测试的时候,经常会碰到文件上传接口文件下载接口

那么,文件接口跟普通接口有什么区别呢?又该如何实现呢?

〇、前言

文件上传/下载接口普通接口类似,但是有细微的区别。

如果需要发送文件到服务器,例如:上传文档、图片、视频等,就需要发送二进制数据,上传文件一般使用的都是 Content-Type: multipart/form-data 数据类型,可以发送文件,也可以发送相关的消息体数据。

反之,文件下载就是将二进制格式的响应内容存储到本地,并根据需要下载的文件格式来写文件名,例如:F:/caituotuo-file.pdf。

一、文件上传接口

1. 接口文档

Request URL: /createfile

Request Method: POST

Content-Type: multipart/form-data

名称 类型 是否必须 描述
file File 文件
title String 文件名称
fileType String 文件类型:doc, docx, txt, pdf, png, gif, jpg, jpeg, tiff, html, rtf, xls, txt

2. 代码实现

(1)实现步骤:
  1. 构造文件数据,通过open()函数以二进制方式打开文件

    文件上传接口参数与普通post请求一样,需要写成Key和Value模式,Key为参数名称file(也是组件的name属性),Value为一个元组(与普通接口不同的地方)

    "file": (
        "caituotuo-file.pdf", # 元组第一个值为文件名称,没有则取None
        open(r"F:\caituotuo-file.pdf", "rb"), # 若第一个值非None,则取文件open打开的二进制流,否则直接写文件路径,如"F:\caituotuo-file.pdf"
        "pdf" # 文件类型
    )
    "file": (
        None,
        "F:\caituotuo-file.pdf"
    )
  2. 构造其他数据

    {
        "title": "接口上传的文件",
        "fileType": "pdf"
    }
  3. 发送请求,将文件数据以 files 参数传入,其他消息体数据通过 dataheaderscookies 等传入

    req = {
                "url": "127.0.0.1/createfile",
                "method": "POST",
                "headers": {},
                "files": {"file": ("caituotuo-file.pdf", open(r"F:\caituotuo-file.pdf", "rb"), "pdf")},
                "data": {
                    "title": "接口上传的文件",
                    "fileType": "pdf"
                }
            }
(2)完整代码
# -*- coding:utf-8 -*-
# 作者:测试蔡坨坨
# 时间:2022/3/12 21:04
# 功能:上传文件demo

import requests


class Createfile:
    
    def createfile(self):
        req = {
            "url": "127.0.0.1/createfile",
            "method": "POST",
            "headers": {},
            "files": {"file": ("", open(r"F:\caituotuo-file.pdf", "rb"), "pdf")},
            "data": {
                "title": "接口上传的文件",
                "fileType": "pdf"
            }
        }
        res = requests.request(**req)
        assert res.status_code == 200
        res_json = res.json()
        return res_json["result"]["id"]


if __name__ == '__main__':
    Createfile().createfile()

二、文件下载接口

1. 接口文档

Request URL:/download

Request Method:GET

名称 类型 是否必须 描述
id Long 文件组id
downloadItems String[] 下载可选项
needCompressForOneFile Boolean 是,默认单文件也压缩 当下载的文件仅一份时,是否压缩

2. 代码实现

# -*- coding:utf-8 -*-
# 作者:测试蔡坨坨
# 时间:2022/4/5 2:56
# 功能:下载文件demo

import requests


class Download:
    def download(self):
        req = {
            "url": "127.0.0.1/download",
            "method": "GET",
            "headers": {},
            "params": {
                "id": 2947403045981869536,
                "downloadItems": ["NORMAL"],
                "needCompressForOneFile": False
            },
        }
        res = requests.request(**req).content # 注意“.content"获取返回内容
        # with open("F:/response.zip", "wb") as f: # 多份文件返回压缩包
        with open("F:/response.pdf", "wb") as f:
            f.write(res)
        return res


if __name__ == '__main__':
    Download().download()
相关文章
|
8天前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
53 7
Jmeter实现WebSocket协议的接口测试方法
|
8天前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
35 3
快速上手|HTTP 接口功能自动化测试
|
10天前
|
机器学习/深度学习 数据可视化 数据处理
利用R语言进行头条主页内容的自动化下载
利用R语言进行头条主页内容的自动化下载
|
10天前
|
安全 JavaScript 前端开发
自动化测试的魔法:如何用Python编写你的第一个测试脚本
【8月更文挑战第41天】在软件的世界里,质量是王道。而自动化测试,就像是维护这个王国的骑士,确保我们的软件产品坚不可摧。本文将引导你进入自动化测试的奇妙世界,教你如何使用Python这把强大的魔法杖,编写出能够守护你代码安全的第一道防护咒语。让我们一起开启这场魔法之旅吧!
|
8天前
|
JavaScript 前端开发 测试技术
ChatGPT与接口测试
ChatGPT与接口测试,测试通过
21 5
|
17天前
|
IDE 测试技术 持续交付
Python自动化测试与单元测试框架:提升代码质量与效率
【9月更文挑战第3天】随着软件行业的迅速发展,代码质量和开发效率变得至关重要。本文探讨了Python在自动化及单元测试中的应用,介绍了Selenium、Appium、pytest等自动化测试框架,以及Python标准库中的unittest单元测试框架。通过详细阐述各框架的特点与使用方法,本文旨在帮助开发者掌握编写高效测试用例的技巧,提升代码质量与开发效率。同时,文章还提出了制定测试计划、持续集成与测试等实践建议,助力项目成功。
43 5
|
16天前
|
数据采集 测试技术 API
在BrowserStack上进行自动化爬虫测试的终极指南
随着互联网的发展,数据价值日益凸显,爬虫技术成为提取网页信息的关键工具。然而,不同环境下的测试与运行挑战重重,特别是在多浏览器、多平台上保证爬虫的稳定性和兼容性尤为困难。BrowserStack作为领先的跨浏览器测试平台,提供了强大的工具和服务。本文将详细介绍如何在BrowserStack上进行自动化爬虫测试,并结合代理IP技术提升爬虫的隐蔽性和成功率。通过具体步骤和案例分析,展示如何利用Selenium、自定义用户代理和Cookie设置来应对反爬虫机制。本指南旨在为开发者提供实用模板,帮助其在多变的测试环境中构建高效的爬虫系统。
|
18天前
|
安全 Linux 测试技术
Kali Linux预装的自动化渗透测试工具
Kali Linux预装的自动化渗透测试工具
28 2
|
2天前
|
存储 监控 安全
在自动化测试环境中,如何确保测试数据的安全性和隐私性
在自动化测试环境中,如何确保测试数据的安全性和隐私性
|
6天前
|
敏捷开发 测试技术 持续交付
自动化测试之美:如何用Selenium和Python打造高效测试脚本
【9月更文挑战第13天】在软件开发的海洋中,自动化测试是那抹不可或缺的亮色。它不仅提升了测试效率,还保障了产品质量。本文将带你领略使用Selenium和Python构建自动化测试脚本的魅力所在,从环境的搭建到脚本的编写,再到问题的排查,每一步都是对软件质量把控的深刻理解和实践。让我们开始这段探索之旅,解锁自动化测试的秘密吧!
8 0