Files
api-checker/README.md
T
Black_Raven ab71c20012 docs: Add README.md
Documentation with class descriptions, fields, and usage examples
2026-08-24 15:47:53 +03:00

138 lines
3.6 KiB
Markdown

# API Checker - Models
## Архитектура
Данные flowing через систему:
```
YAML/OpenAPI/Postman → Parser → TestModel → Context → Runner → TestResult
```
## Классы
### TestModel (models/itm.py)
Основная структура теста.
| Поле | Тип | Описание |
|------|-----|----------|
| name | str | Название теста |
| base_url | str | Базовый URL |
| variables | dict | Переменные |
| steps | list[StepModel] | Шаги теста |
### StepModel (models/itm.py)
Один шаг теста.
| Поле | Тип | Описание |
|------|-----|----------|
| name | str | Название шага |
| request | RequestModel | HTTP запрос |
| extract | list[ExtractModel] | Извлечение данных |
| assert_ | list[AssertModel] | Проверки |
### RequestModel (models/itm.py)
HTTP запрос.
| Поле | Тип | Описание |
|------|-----|----------|
| method | str | GET, POST, PUT... |
| path | str | Путь URL |
| headers | dict | Заголовки |
| body | dict | Тело запроса |
| timeout | int | Таймаут |
### ExtractModel (models/itm.py)
Извлечение данных из ответа.
| Поле | Тип | Описание |
|------|-----|----------|
| name | str | Имя переменной |
| json_path | str | Путь к значению |
| source | str | body/header/status |
### AssertModel (models/itm.py)
Проверка ответа.
| Поле | Тип | Описание |
|------|-----|----------|
| type | str | status/json/header |
| path | str | Путь к полю |
| operator | str | equals/exists/gt/lt |
| value | Any | Ожидаемое значение |
### Context (models/context.py)
Контекст выполнения.
| Поле | Тип | Описание |
|------|-----|----------|
| config | TestModel | Конфигурация |
| variables | dict | Статические переменные |
| extracted | dict | Извлечённые данные |
| Метод | Описание |
|-------|----------|
| resolve(template) | Заменяет {{var}} на значение |
| set_extracted(name, value) | Сохраняет извлечённое |
### Executor (models/executor.py)
Выполняет HTTP запросы.
| Метод | Описание |
|-------|----------|
| execute(request) → Response | Выполняет запрос |
### Extractor (models/extractor.py)
Извлекает данные из ответов.
| Метод | Описание |
|-------|----------|
| extract(configs, response) | Извлекает данные в Context |
### Validator (models/validator.py)
Проверяет ответы.
| Метод | Описание |
|-------|----------|
| validate(asserts, response) → bool | Все ли проверки прошли |
### TestRunner (models/runner.py)
Оркестратор.
| Метод | Описание |
|-------|----------|
| run() → TestResult | Запускает тест |
## Пример использования
```python
from models import TestModel, StepModel, RequestModel, ExtractModel, TestRunner, Context
config = TestModel(
base_url="http://localhost:8080",
variables={"email": "test@x.com"},
steps=[
StepModel(
name="Login",
request=RequestModel(method="POST", path="/login"),
extract=[ExtractModel(name="token", json_path="$.token")],
)
]
)
context = Context(config)
runner = TestRunner(context)
result = runner.run()
print(result.passed) # True/False
```