pytest requests plugin
Project description
pytest-req
__ __
____ __ __/ /____ _____/ /_ ________ ____ _
/ __ \/ / / / __/ _ \/ ___/ __/ ______ / ___/ _ \/ __ `/
/ /_/ / /_/ / /_/ __(__ ) /_ /_____/ / / / __/ /_/ /
/ .___/\__, /\__/\___/____/\__/ /_/ \___/\__, /
/_/ /____/ /_/
pytest requests plugin
pytest 使用 requests 库的插件。
特点
- 完全兼容Requests库的使用。
- 提供详细的
请求/响应
日志,并支持可配置。 - 轻量级,非侵入。
安装
pip install pytest-req
使用
pytest-req 完全兼容 Requests API 如下:
pytest-req(fixture) | requests |
---|---|
get() | requests.get() |
post() | requests.post() |
put() | requests.put() |
delete() | requests.delete() |
patch() | requests.patch() |
options() | requests.options() |
head() | requests.head() |
session() ⚠ | requests.session() |
session IDE无法自动补全。可以正常使用session下面的
get()/post()/put()...
pytest-req 提供 expect
针对接口返回数据进行断言。
pytest-req(assert) | 说明 |
---|---|
expect(response).to_be_ok() | 状态码 200 |
expect(response).to_have_status_code(404) | 状态码等于 404 |
expect(response).to_have_json_matching(json_data, exclude=[]) | 断言JSON数据,exclude=[排查的字段列表] |
expect(response).to_have_path_value(path="headers.Host", value="value") | 断言提取的数据,是否等于value ,参考:https://jmespath.org |
👉︎ 查看测试
⭐ 支持简单的请求
# test_req.py
from pytest_req.assertions import expect
def test_post_method(post):
"""
test post request
"""
s = post('https://httpbin.org/post', data={'key': 'value'})
expect(s).to_be_ok()
def test_get_method(get):
"""
test get request
"""
payload = {'key1': 'value1', 'key2': 'value2'}
s = get("https://httpbin.org/get", params=payload)
expect(s).to_be_ok()
⭐ 支持Session
# test_session.py
def test_session(session):
"""
test session, keep requests cookie
"""
s = session
s.get('https://httpbin.org/cookies/set/sessioncookie/123456789')
s.get('https://httpbin.org/cookies')
⭐ 支持base-url
# test_base_url.py
def test_req_base_url(get):
"""
test base url
pytest --base-url=https://httpbin.org
"""
payload = {'key1': 'value1', 'key2': 'value2'}
s = get("/get", params=payload)
assert s.status_code == 200
更多的使用方式参考 requests 文档。
✅ 运行测试
> pytest -s # 运行当前所有用例
> pytest -s test_req.py # 运行指定文件
> pytest -s --base-url=https://httpbin.org # 指定base-url
-s
查看详细日志。--base-url
设置接口基础URL,用例当中进需要配置路径。
更多的运行方式请参考 pytest 文档。
🗒 运行日志
> pytest -qs --base-url=https://httpbin.org test_base_url.py
2024-07-24 12:18:39 | INFO | plugin.py | -------------- Request -----------------[🚀]
2024-07-24 12:18:39 | INFO | plugin.py | [method]: GET [url]: /get
2024-07-24 12:18:39 | DEBUG | plugin.py | [params]:
{
"key1": "value1",
"key2": "value2"
}
2024-07-24 12:18:40 | INFO | plugin.py | -------------- Response ----------------[🛬️]
2024-07-24 12:18:40 | INFO | plugin.py | successful with status 200
2024-07-24 12:18:40 | DEBUG | plugin.py | [type]: json [time]: 1.655213
2024-07-24 12:18:40 | DEBUG | plugin.py | [response]:
{
"args": {
"key1": "value1",
"key2": "value2"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.32.3",
"X-Amzn-Trace-Id": "Root=1-66a080a0-2cb150485a260ae75b34b32f"
},
"origin": "171.10.176.209",
"url": "https://httpbin.org/get?key1=value1&key2=value2"
}
.2024-07-24 12:18:40 | INFO | plugin.py | -------------- Request -----------------[🚀]
2024-07-24 12:18:40 | INFO | plugin.py | [method]: GET [url]: /cookies/set/sessioncookie/123456789
2024-07-24 12:18:43 | INFO | plugin.py | -------------- Response ----------------[🛬️]
2024-07-24 12:18:43 | INFO | plugin.py | successful with status 200
2024-07-24 12:18:43 | DEBUG | plugin.py | [type]: json [time]: 0.807398
2024-07-24 12:18:43 | DEBUG | plugin.py | [response]:
{
"cookies": {
"sessioncookie": "123456789"
}
}
2024-07-24 12:18:43 | INFO | plugin.py | -------------- Request -----------------[🚀]
2024-07-24 12:18:43 | INFO | plugin.py | [method]: GET [url]: /cookies
2024-07-24 12:18:44 | INFO | plugin.py | -------------- Response ----------------[🛬️]
2024-07-24 12:18:44 | INFO | plugin.py | successful with status 200
2024-07-24 12:18:44 | DEBUG | plugin.py | [type]: json [time]: 1.226137
2024-07-24 12:18:44 | DEBUG | plugin.py | [response]:
{
"cookies": {
"sessioncookie": "123456789"
}
}
.
2 passed in 5.36s
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pytest_req-0.3.0.tar.gz
(12.8 kB
view details)
Built Distribution
File details
Details for the file pytest_req-0.3.0.tar.gz
.
File metadata
- Download URL: pytest_req-0.3.0.tar.gz
- Upload date:
- Size: 12.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e327c811a8b2d41841a4da03cf037f3413636c62fcacc293c0f6d0ab8cfab559 |
|
MD5 | b39ddd8b56ad0170a213cce82e686129 |
|
BLAKE2b-256 | 005425829a154c2a702f40f47675d1b8601fb6b03e97a28bcbd2c6f8673c7763 |
File details
Details for the file pytest_req-0.3.0-py3-none-any.whl
.
File metadata
- Download URL: pytest_req-0.3.0-py3-none-any.whl
- Upload date:
- Size: 12.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1f85d3e3d8a0da715f84e137eed5a1c29ff1f66b14b4ca74e6f57b0ac5822315 |
|
MD5 | b4c42347ba0315ecdadbbfc9ed93c909 |
|
BLAKE2b-256 | 7039a26732405529d478997c3c4b2facf0dcc7733c320d998333ed27650f04dc |