# 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 ```