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

前言

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

  • httprunner 3.1.4
  • requests_toolbelt
  • filetype

使用示例

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

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脚本示例

# 作者-上海悠悠 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脚本示例

# 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()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 出现"cannot resolve com.aliyun:aliyun-java-vod-upload:1.4.13"的错误通常是由于项目的依赖配置中对应的阿里云视频点播SDK库无法找到或无法下载。一般解决方法如下: 首先,确保您的项目的配置中已经正确添加了阿里云视频点播SDK库的依赖项。在项目的build.gradle文件中,找到dependencies节点,在其中添加以下内容: ```groovy dependencies { // other dependencies... implementation 'com.aliyun:aliyun-java-vod-upload:1.4.13' } ``` 其次,由于阿里云的SDK库可能需要在阿里云的Maven仓库中下载,所以请确保您的网络连接是正常的。如果网络连接存在问题,可以先尝试稍后再次构建项目。 另外,也可以尝试清除项目的构建缓存,以排除构建过程中产生的任何缓存问题。可以通过执行以下命令清除构建缓存: ``` ./gradlew clean ``` 执行此命令后,再次构建项目,看是否解决了"cannot resolve com.aliyun:aliyun-java-vod-upload:1.4.13"的错误。 最后,如果以上方法都无法解决问题,可能是由于阿里云的Maven仓库不可访问或SDK库版本已经过时。您可以尝试访问阿里云的官方文档或社区,查看最新的SDK库版本和依赖配置,并更新您的项目配置。 希望以上回答对您有所帮助,祝您项目顺利! ### 回答2: 无法解析 com.aliyun:aliyun-java-vod-upload:1.4.13 的问题通常是由于以下原因导致的: 1. 依赖库版本不正确:请确认 com.aliyun:aliyun-java-vod-upload:1.4.13 是否是一个有效的版本号。有时候会因为版本号错误导致无法解析依赖关系。可以尝试在构建脚本或依赖管理工具中指定正确的版本号。 2. 仓库配置错误:检查您的构建脚本或依赖管理工具中的仓库配置是否正确。确保仓库配置没有错误或者缺失,以便正确地下载依赖库。 3. 网络问题:有时候无法解析依赖关系是由于网络问题造成的。请确保您的网络连接正常,并且可以访问所需的仓库以下载依赖库。 4. 仓库不存在或无法访问:确认您正在使用的仓库是否存在,以及其是否可被访问。有时候仓库被删除或无法访问将导致无法解析依赖关系。 如果以上解决方案都无法解决问题,您可以尝试联系阿里云支持团队,以获取更进一步的帮助和支持。 ### 回答3: 在使用com.aliyun:aliyun-java-vod-upload:1.4.13时遇到了无法解析的问题。该问题可能由以下几种原因引起: 1. 依赖设置错误:请确保在您的项目的构建文件(如build.gradle)中正确添加了aliyun-java-vod-upload的依赖项,并且版本号为1.4.13。您可以使用以下代码片段作为参考: ```groovy dependencies { implementation 'com.aliyun:aliyun-java-vod-upload:1.4.13' } ``` 2. 版本号错误:请确认aliyun-java-vod-upload的版本号是否正确。您可以检查aliyun-java-vod-upload的文档或在Maven仓库中查找最新的版本号。 3. 仓库设置错误:如果您的项目使用了自定义的Maven仓库,请确保在构建文件中正确添加了该仓库的设置。您可以使用以下代码片段作为参考: ```groovy repositories { maven { url "https://your-custom-repo.com" } } ``` 4. 网络连接问题:如果您在构建或下载依赖时遇到网络问题,可能导致无法解析依赖项。请确保您的网络连接正常,并尝试重新构建项目。 如果以上方法都无法解决该问题,请尝试更新aliyun-java-vod-upload到最新版本,或者联系aliyun-java-vod-upload的维护者以获取更多支持。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值