pytest-play插件,用于驱动著名的Python requests库进行HTTP调用
项目描述
play requests
pytest-play插件,用于驱动著名的Python requests 库进行HTTP调用。
更多信息和示例请参考
pytest-play,文档
cookiecutter-qa,如果您想开始修改,可以查看使用play_requests插件的pytest-play示例
特性
此pytest-play命令提供程序允许您使用一个包含一组pytest-play命令的YAML配置文件来驱动Python requests HTTP库。
您可以看到一个由pytest-play插件提供的命令驱动的pytest-play脚本
- provider: play_requests type: GET assertion: "'pytest-play' in response.json()" url: https://www.google.it/complete/search parameters: headers: Host: www.google.it User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:57.0) Gecko/20100101 Firefox/57.0 Accept: "*/*" Accept-Language: en-US,en;q=0.5 Referer: https://www.google.it/ Connection: keep-alive params: - - client - psy-ab - - hl - it - - gs_rn - '64' - - gs_ri - psy-ab - - gs_mss - pytest- - - cp - '11' - - gs_id - '172' - - q - pytest-play - - xhr - t timeout: 2.5
以上示例
执行了一个对https://www.google.it/complete/search?client=psy-ab&hl=it&…
play_requests 支持由 requests 库支持的所有的 HTTP 方法
OPTIONS
HEAD
GET
POST
PUT
PATCH
DELETE
以下部分将提供其他 play_requests 命令示例。
上传文件
上传 csv 文件
- provider: play_requests type: POST url: http://something/1 parameters: files: filecsv: - report.csv - some,data
上传带有自定义头的 csv 文件
- provider: play_requests type: POST url: http://something/1 parameters: files: filecsv: - report.csv - some,data - application/csv - Expires: '0'
上传文件并提供路径
- provider: play_requests type: POST url: http://something/1 parameters: files: filecsv: - file.csv - path:$base_path/file.csv
假设您有一个 $base_path 变量。
将响应保存到变量中
您可以将响应处理保存到 pytest-play 变量并在后续命令中重复使用
- provider: play_requests type: POST url: http://something/1 variable: myvar variable_expression: response.json() assertion: variables['myvar']['status'] == 'ok' parameters: json: foo: bar timeout: 2.5
如果端点返回非 JSON 响应,请使用 response.text 代替。
默认负载
如果您所有的请求都有一个共同的负载,这可能会很麻烦,但多亏了 play_requests,您可以避免重复。
您可以使用多种方式在程序中设置变量,使用 pytest-play 执行命令或执行命令。您还可以使用 play_python 的 exec 命令更新变量
- provider: python type: store_variable name: bearer expression: "'BEARER'" - provider: python type: store_variable name: play_requests expression: "{'parameters': {'headers': {'Authorization': '$bearer'}}}" - provider: play_requests type: GET url: "$base_url"
并且所有后续的 HTTP 请求都将使用默认负载中提供的授权 bearer 执行。
合并规则
如果 play_requests 命令提供了任何其他头值,则结果 HTTP 请求将使用合并后的头值执行(例如:Authorization + Host)
如果 play_requests 命令提供了冲突的头值或任何其他默认选项,则命令提供的 Authorization 头将获胜,并且它将覆盖当前调用中默认的冲突头值
断言响应状态码
- provider: play_requests type: POST url: http://something/1 variable: myvar variable_expression: response.json() assertion: response.status_code == 200 parameters: json: foo: bar
或者如果您想,您可以使用表达式 response.raise_for_status() 来代替检查状态码的精确匹配。
raise_for_status 调用会在 HTTP 请求返回不成功的状态码时引发 HTTPError。
发送原始数据
如果您想发送一些 POST 数据或发送一个未进行自动 JSON 编码的 JSON 负载
- provider: play_requests type: POST url: http://something/1 parameters: data: '{"foo" : "bar" }'
重定向
默认情况下,requests 将为除了 HEAD 之外的所有动词执行位置重定向
您可以通过调整 allow_redirects 选项来禁用或启用重定向
- provider: play_requests type: POST url: http://something/1 variable: myvar variable_expression: response.json() assertion: response.status_code == 200 parameters: allow_redirects: false json: foo: bar
pytest-play 的推文发生在这里
致谢
此包是用 Cookiecutter 和基于 audreyr/cookiecutter-pypackage 项目模板的 cookiecutter-play-plugin 创建的。
变更日志
0.0.5 (2019-04-08)
管理 cookies 并为您准备好,这样您就无需自己使用 auth=('username', 'password') 创建 cookie 头
0.0.4 (2019-01-25)
支持新的基于 YAML 的 pytest-play >= 2.0 语法(不再支持 json)
0.0.3 (2018-01-22)
移除条件选项(已由 pytest-play 的 skip_condition 实现)
文档改进
0.0.2 (2018-01-16)
重构内部方法
移除与默认负载合并的命令(已在 pytest-play >= 1.1.0 中实现)
0.0.1 (2018-01-10)
首次发布
项目详情
play_requests-0.0.5.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bc2ef513d8078acb61cd17ce0882a4c9168c859a490e1e3b700d1d14ddde1d49 |
|
MD5 | fbb7b661c1ec3134960307b16a5bed04 |
|
BLAKE2b-256 | e09dff726a4616e053359712d55243a86e1905e85e7e7355761c137ee70ee700 |
play_requests-0.0.5-py2.py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0c5c8e9a09c806c383d62da9044918c3df48261cb7a41211df4eddc8dd8b5a29 |
|
MD5 | 6e77f25465c84c4d7c59fa2c7c568ffc |
|
BLAKE2b-256 | 40acb40659015844589bffbe58d1d1153750d5ca637a3cc42c79a5c321310c44 |