首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >httprunner 3.x学习14 - 上传文件(upload)

httprunner 3.x学习14 - 上传文件(upload)

作者头像
上海-悠悠
发布2021-06-24 21:52:48
发布2021-06-24 21:52:48
1.2K0
举报

前言

requests 库里面上传文件会用到 requests_toolbelt, 可以很方便的解决 multipart/form-data 类型的文件上传相关接口。 HttpRunner3.x 集成了 requests_toolbelt,可以使用内置 upload 关键字来上传文件相关操作。 相关环境:

  • httprunner 3.1.4
  • requests_toolbelt
  • filetype

使用示例

使用 upload 关键字,上传文件(2.4.1以上版本)

代码语言:javascript
复制
teststeps:
- 
    name: upload file
    request:
        url: http://httpbin.org/upload
        method: POST
        headers:
            Cookie: session=AAA-BBB-CCC
        upload:
            file: "data/file_to_upload"
            field1: "value1"
            field2: "value2"
    validate:
        - eq: ["status_code", 200]

参考案例:文件上传multipart/form-data

用fiddler抓包,查看抓到的接口,以下这种接口就是multipart/form-data

  • Content-Type: multipart/form-data
  • body参数是这种格式:

——————————————-22165374713946 Content-Disposition: form-data; name=”localUrl”

yoyoketang.png ——————————————-22165374713946 Content-Disposition: form-data; name=”imgFile”; filename=”yoyoketang.png” Content-Type: image/png

httprunner3.x 脚本文件上传使用 upload 关键字,文件放 data 目录下

yaml脚本示例

代码语言:javascript
复制
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

config:
    name: file
    base_url: ${ENV(base_url)}
    variables:
        filename: data/hrun.png
        titlename: 上海-悠悠
teststeps:
-
    name: upload file
    request:
        url: /api/v1/upfile/
        method: POST
        upload:
            file: $filename
            title: $titlename

pytest脚本示例

代码语言:javascript
复制
# NOTE: Generated By HttpRunner v3.1.4
# FROM: testcases\upfile.yml
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase

class TestCaseUpfile(HttpRunner):

    config = (
        Config("file")
        .variables(**{"filename": "data/hrun.png", "titlename": "上海-悠悠"})
        .base_url("${ENV(base_url)}")
    )

    teststeps = [
        Step(
            RunRequest("upload file")
            .post("/api/v1/upfile/")
            .upload(**{"file": "$filename", "title": "$titlename"})
        ),
    ]

if __name__ == "__main__":
    TestCaseUpfile().test_start()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 使用示例
  • 参考案例:文件上传multipart/form-data
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档