Metadata-Version: 2.3
Name: reqtestium
Version: 0.10.0
Summary: 
License: MIT
Author: John Makarov
Author-email: johnmakarovqa@gmail.com
Requires-Python: >=3.12,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: allure-pytest (>=2.13.5,<3.0.0)
Requires-Dist: curlify (>=2.2.1,<3.0.0)
Requires-Dist: deepdiff (>=8.2.0,<9.0.0)
Requires-Dist: jsonschema (>=4.23.0,<5.0.0)
Requires-Dist: requests (>=2.32.3,<3.0.0)
Description-Content-Type: text/markdown

## Краткое описание функционала 

1. Базовая конфигурация для отправки всех api запросов 
2. Логгирование в терминал, allure отчет 
3. Удобное fluent сравнение ожидаемого результата с фактическим результатом
4. Валидация json схемы

## Пример использования 

```
# from reqtestium import allure_logger
from reqtestium import Configuration, HTTPClient, console_logger

config = Configuration(
    base_url="https://petstore.swagger.io",
    # Так же можно создавать свой logger на основе LoggerProtocol
    # from reqtestium.loggers.logger import LoggerProtocol
    loggers=[console_logger],
)
client = HTTPClient(config)


response = client.post(
    "/v2/user",
    json={
        "id": 0,
        "username": "string",
        "firstName": "string",
        "lastName": "string",
        "email": "string",
        "password": "string",
        "phone": "string",
        "userStatus": 0,
    },
)

# Можем проверять конкретные значения или весь ответ
# response.json.should_be_eq()
response.status_code.should_be_eq(200)
response.json.value_with_key("code").should_be_eq(200)
response.json.value_with_key("type").should_be_eq("unknown")

# Можем проверить приходящий json на соответствие схеме.
response.json.schema_should_be_eq(
    {
        "type": "object",
        "properties": {
            "code": {"type": "integer"},
            "type": {"type": "string"},
            "message": {"type": "string"},
        },
        "required": ["code", "type", "message"],
        "additionalProperties": False,
    }
)


# Можем проверить ответ исключив некоторые поля
response.json.without_fields(["type", "message"]).should_be_eq({"code": 200})


# Можем получить оригинальный Response из requests.
print(response.raw_response)


response.json.length.should_be_eq(3)
```
