Язык: Русский · English
API test automation framework для Memes API на Python + Pytest + Allure + Requests.
Этот проект — демонстрация промышленного подхода к тестированию API: чистая архитектура, глубокая проверка безопасности, автоматическая отчётность и полноценный CI/CD.
| Старт | Документация |
|---|---|
| Быстрый старт (~5 мин) | Оглавление RU · EN · языки |
Фреймворк показывает, как выстроить инфраструктуру API-автоматизации с акцентом на надёжность, поддерживаемость и прозрачность результатов.
Ключевые возможности:
- 🏗️ Page Object для API — чёткая архитектура клиентов.
- 📊 Allure-отчёты — с шагами, вложениями request/response и маскированием токенов.
- 🏷️ Маркеры приоритетов (
critical/medium/security) для гибкого запуска. - 🔒 Security-сценарии — проверка
401/403с подтверждением, что данные не изменились. - ⚙️ CI/CD — GitHub Actions с автоматической публикацией отчёта на GitHub Pages.
- 🎲 Генерация данных (Faker) и polling (Tenacity) для тестов с ожиданием.
- 🛡️ Статический анализ — mypy + TypedDict, pre-commit хуки в CI.
- Ресурсную изоляцию: сессионный токен, disposable kill-токен и гарантированный teardown мемов (даже при падении теста).
- Security глубже статус-кода: проверяем не только
401/403, но и что ресурс реально не изменился. - Известный дефект API: зафиксирован через
xfail(PUT возвращаетidкак string). - Качество кода: типизация клиентов и payload (mypy + TypedDict), pre-commit в CI.
- Полный контур отчёта: Allure → GitHub Actions → GitHub Pages.
| Компонент | Технология |
|---|---|
| 🐍 Язык | Python 3.12+ |
| 🧪 Тест-раннер | Pytest 9.0.1 |
| 🌐 HTTP-клиент | Requests 2.32.4 |
| 📊 Отчёты | allure-pytest 2.15.2 |
| 🎲 Генерация данных | Faker 38.2.0 |
| 🔁 Retry / polling | Tenacity 9.1.2 |
| 🛡️ Типы / хуки | mypy, TypedDict, pre-commit |
| ⚙️ CI/CD | GitHub Actions → Allure на Pages |
| 🔗 Стенд | Memes API (URL задаётся в .env / Secrets как BASE_URL) |
git clone https://github.com/aliaksandr-stanavy/api-test-automation-framework.git
cd api-test-automation-framework
python -m venv .venv
# Windows: .venv\Scripts\activate
# Unix: source .venv/bin/activate
pip install -r requirements.txt
copy .env.example .env # или: cp .env.example .env
# заполните BASE_URL, TEST_USERNAME, TEST_TOKEN (опционально)
make critical
# или: pytest -m critical -q| Переменная | Описание |
|---|---|
BASE_URL |
базовый URL Memes API |
TEST_USERNAME |
имя для POST /authorize |
TEST_TOKEN |
сохранённый токен (если жив — переиспользуется) |
В CI — GitHub Secrets. Полный гайд: quick-start · Make и Allure: local-run.
api-test-automation-framework/
├── endpoints/ # API clients + общие asserts
├── tests/ # сценарии
├── utils/ # generators, cases, TypedDict
├── conftest.py # фикстуры
├── Makefile
├── docs/
│ ├── README.md # навигатор языков
│ ├── ru/ # документация (RU)
│ └── en/ # документация (EN)
├── .github/workflows/ # CI/CD
├── LICENSE
└── CHANGELOG.md
Полное оглавление: docs/ru/index.md. Ниже — навигация по документации.
| Если вам нужно... | Документ | ⏱ Примерное время |
|---|---|---|
| Запустить тесты | Быстрый старт | ~5 минут |
| Понять устройство кода | Архитектура | 15 минут |
| Выбрать фикстуру | Справочник фикстур | 10 минут |
| Узнать контракт продукта | BRD | 10 минут |
| Проверить ожидаемые коды | QA-требования | 10 минут |
| Узнать все Make-команды | Локальный запуск | 5 минут |
| Разобрать красный CI | CI/CD + Анализ результатов | 15 минут |
| Решить проблему | Troubleshooting | 5 минут |
История изменений: CHANGELOG.md.
- Authorize, CRUD meme, E2E lifecycle
- Валидация полей и invalid ids
- Security:
401без/с неверным токеном;403для non-owner + проверка, что ресурс не затронут - Известный баг: PUT
idкакstring—xfail(см. qa-requirements)
Тесты интеграционные: нужен доступный API. Allure в _make_request прикрепляет request/response (Authorization маскируется). Kill-тест использует disposable token — session auth_token не убивается.
pytest --alluredir=allure-results
allure serve allure-results
# или: make allureВ CI отчёт публикуется на GitHub Pages: https://aliaksandr-stanavy.github.io/api-test-automation-framework/ Подробнее: local-run, ci-cd.
Этот проект создан в рамках развития моей экспертизы в Full Stack QA и является частью моего публичного GitHub-портфолио. Его цель — показать современные подходы к построению API-фреймворков, организации тестов и CI/CD.
Буду рад обратной связи, предложениям и профессиональному общению.
- 🌐 GitHub Portfolio: https://github.com/aliaksandr-stanavy
- 💼 LinkedIn: https://www.linkedin.com/in/aliaksandr-stanavy/
- 📧 Email: aliaksandr.stanavy@gmail.com
Проект распространяется по лицензии MIT.
Подробности см. в файле LICENSE.
© 2026 Aliaksandr Stanavy