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是你圖片放的地址,如果不在一個目錄就寫絕對路徑,在同一目錄可以直接寫文件名稱


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM