Python接口自动化之文件上传/下载接口详解

〇、前言

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

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

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

一、文件上传接口

1. 接口文档

Request URL: /createbyfile

Request Method: POST

Content-Type: multipart/form-data

名称类型是否必须描述
fileFile文档文件
titleString文档名称
fileTypeString文件类型:doc, docx, txt, pdf, png, gif, jpg, jpeg, tiff, html, rtf, xls, txt

2. 代码实现

(1)实现步骤:

构造文件数据,通过open函数以二进制方式打开文件

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

1

2

3

4

5

"file": (

    "", # 元组第一个值为文件名称,没有则取None

    open(r"F:\pdf_file.pdf", "rb"), # 若第一个值非None,则取文件open打开的二进制流,否则直接写文件路径,如"F:\pdf_file.pdf"

    "pdf" # 文件类型

)

1

2

3

4

"file": (

    None,

    "F:\pdf_file.pdf"

)

构造其他数据

1

2

3

4

{

    "title": "接口发起的文档",

    "fileType": "pdf"

}

发送请求,将文件数据以 files 参数传入,其他消息体数据通过 data 、json 、 headers 、 cookies 等传入

1

2

3

4

5

6

7

8

9

10

req = {

            "url": "127.0.0.1/v2/document/createbyfile",

            "method": "POST",

            "headers": {},

            "files": {"file": ("", open(r"F:\pdf_file.pdf", "rb"), "pdf")},

            "data": {

                "title": "接口发起的文档",

                "fileType": "pdf"

            }

        }

(2)完整代码

base_api.py

1

2

3

4

5

6

7

import requests

class BaseApi:

    @staticmethod

    def requests_http(req):

        # ** 解包

        result = requests.request(**req)

        return result

api/createbyfile.py

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

# -*- coding:utf-8 -*-

# 作者:IT小学生蔡坨坨

# 时间:2022/3/12 21:04

# 功能:根据文件类型创建合同文档

from base_api import BaseApi

class Createbyfile:

    def createbyfile(self):

        req = {

            "url": "127.0.0.1/createbyfile",

            "method": "POST",

            "headers": {},

            "files": {"file": ("", open(r"F:\pdf_file.pdf", "rb"), "pdf")},

            "data": {

                "title": "接口发起的文档",

                "fileType": "pdf"

            }

        }

        res = BaseApi().requests_http(req)

        assert res.status_code == 200

        res_json = res.json()

        return res_json["result"]["documentId"]

if __name__ == '__main__':

    Createbyfile().createbyfile()

二、文件下载接口

1. 接口文档

Request URL:/download

Request Method:GET

名称类型是否必须描述
contractIdLongIDID
downloadItemsString[]下载可选项,NORMAL(正文),ATTACHMENT(附件)
needCompressForOneFileBoolean是,默认单文件也压缩当下载的文件仅一份时,是否压缩

2. 代码实现

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

# -*- coding:utf-8 -*-

# 作者:IT小学生蔡坨坨

# 时间:2022/4/5 2:56

# 功能:下载合同

from base_api import BaseApi

class Download:

    def download(self):

        req = {

            "url": "127.0.0.1/download",

            "method": "GET",

            "headers": {},

            "params": {

                "contractId": 2947403075747869536,

                "downloadItems": ["NORMAL"],

                "needCompressForOneFile": False

            },

        }

        res = BaseApi().requests_http(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()

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python接口自动化测试是一种通过编写Python代码自动化执行接口测试的方法,通常采用Python中的第三方库实现。接口测试是针对软件系统的API接口进行验证,包括请求和响应验证、参数验证、返回结果验证等,其目的是确保系统在实现业务功能时能够正确运行和正常响应。Python作为一种高级编程语言,具有良好的表现力和扩展性,广泛应用于接口测试领域。 Python接口自动化测试的实现过程通常包括以下步骤: 1. 安装相应的Python库:比如requests、unittest、pytest等。 2. 编写测试代码:使用相应的Python库编写测试用例,包括测试接口的请求参数、请求方式、响应状态码、响应体等内容。 3. 运行测试:执行测试代码并生成测试报告,通常采用Jenkins、Travis CI等持续集成工具进行自动化运行。 Python接口自动化测试具有以下优势: 1. 快速执行:通过编写Python代码,自动化执行接口测试能够快速完成测试,并且测试过程能够反复执行,提高测试的效率。 2. 灵活性高:Python具有良好的表现力和扩展性,可以自定义接口测试框架和各种测试用例。 3. 代码复用性强:Python代码可以模块化和封装,让测试代码能够被复用,在测试维护中也更加方便。 总之,Python接口自动化测试是一个高效、灵活、可靠的测试方法,在新时代的软件测试中具有非常重要的地位。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值