diff --git a/docs/prepare/upload-case.md b/docs/prepare/upload-case.md new file mode 100644 index 00000000..1eedb4bd --- /dev/null +++ b/docs/prepare/upload-case.md @@ -0,0 +1,51 @@ + +对于上传文件类型的测试场景,HttpRunner 集成 [requests_toolbelt][1] 实现了上传功能。 + +在使用之前,确保已安装如下依赖库: + +- [requests_toolbelt](https://github.com/requests/toolbelt) +- [filetype](https://github.com/h2non/filetype.py) + +使用内置 `upload` 关键字,可轻松实现上传功能。(适用版本:2.4.1+) + +```yaml +- test: + 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] +``` + +同时,你也可以继续使用之前描述形式。(使用版本:2.0+) + +```yaml +- test: + name: upload file + variables: + file: "data/file_to_upload" + field1: "value1" + field2: "value2" + m_encoder: ${multipart_encoder(file=$file, field1=$field1, field2=$field2)} + request: + url: http://httpbin.org/upload + method: POST + headers: + Content-Type: ${multipart_content_type($m_encoder)} + Cookie: session=AAA-BBB-CCC + data: $m_encoder + validate: + - eq: ["status_code", 200] +``` + +参考案例:[httprunner/tests/httpbin/upload.v2.yml][2] + +[1]: https://toolbelt.readthedocs.io/en/latest/uploading-data.html +[2]: https://github.com/httprunner/httprunner/blob/master/tests/httpbin/upload.v2.yml \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index e73dea8b..2b86f90d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -64,6 +64,7 @@ nav: - 参数化数据驱动: prepare/parameters.md - Validate & Prettify: prepare/validate-pretty.md - 信息安全: prepare/security.md + - 文件上传场景:prepare/upload-case.md - 测试执行: - 运行测试(CLI): run-tests/cli.md - 测试报告: run-tests/report.md