zoukankan      html  css  js  c++  java
  • httprunner学习25-文件上传multipart/form-data

    前言

    httprunner上传文件接口,其实跟requests上传文件的接口是一样的,之前在python接口系列里面有案例
    python接口自动化16-multipart/form-data上传图片

    文件上传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

    对应的python代码

    上传图片

    上传文件的时候用 files= 去接受请求参数,请求参数是字典类型,根据fiddler的抓包去拼接请求参数,比如我们抓包看到的文件 参数

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

    那么 key 就是 name= 后面的值"imgFile", value值是一个元祖类型(list类型也可以),

    • 第一个参数是文件名称:“xxx.jpg”
    • 第二个参数是open打开文件的对象如:open('filepath','rb')
    • 第三个参数是文件类型Content-Type后面对应的值:image/png
     # 上海悠悠,QQ交流群:750815713
    import requests
    
    s = requests.session()  # 保持会话
    
    # 上车文件地址
    url1 = "http://127.0.0.1:81/zentao/file-ajaxUpload-5a26aca290b59.html?dir=image"
    
    f ={
        "localUrl": (None,"1.png"),
        "imgFile": ("1.png", open("d:\1.png", "rb"), "image/png")
      }
    r = s.post(url1, files=f)
    try:
        jpgurl = base+r.json()["url"]
        print(u"上传图片后的url地址:%s"%jpgurl)
    except Exception as msg:
        print(u"返回值不是json格式:%s"%str(msg))
        print(r.content)
    

    httprunner脚本

    如果上面的脚本确定能跑的通,再去写httprunner脚本,以下只是一个请求示例

     # 上海悠悠,QQ交流群:750815713
    -   config:
            name: 上传文件
            variables: {}
    -   test:
            name: files
            request:
                files:
                    imgFile: ['name35.jpg', '${get_file()}','image/jpeg']
                headers:
                    Authorization: Bearer 登陆的token
                    User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148
                method: POST
                url: http://x.x.x.x/path/files
            validate:
            -   eq:
                - status_code
                - 200
            -   eq:
                - headers.Content-Type
                - application/json;charset=UTF-8
    
    

    get_file() 读取文件的方法写在debugtalk.py文件

    # debugtalk.py
    
    # 读取文件内容
    def get_file(filePath="name35.jpg"):
        return open(filePath, "rb")
    

    filePath是你图片放的地址,如果不在一个目录就写绝对路径,在同一目录可以直接写文件名称

  • 相关阅读:
    2,ActiveMQ-入门
    1,Java消息服务-JMS
    2,Executor线程池
    Thymeleaf-模板引擎
    1,线程基础
    8,HashMap子类-LinkedHashMap
    7,HashMap
    ncnn编译安装-20190415
    VS2015 C#项目工程配置emgucv依赖的方法
    java jni 调用c++ opencv代码成功范例
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/11863610.html
Copyright © 2011-2022 走看看