docs: Add README.md
Documentation with class descriptions, fields, and usage examples
This commit is contained in:
1 parent
3fc30f3539
commit
ab71c20012
1 file changed
+137
@@ -0,0 +1,137 @@
|
|||||||
|
# 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
|
||||||
|
```
|
||||||
Reference in new issue
Block a user