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 |