httprunner 3.x學習14 - 上傳檔案(upload)
阿新 • • 發佈:2021-06-22
前言
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()