Extensible test automation framework — built for QA engineers who value clean architecture and scalability.
Project description
🛰️ SputnikQA — Test Automation Framework
SputnikQA — это современный, типизированный и расширяемый фреймворк для написания автотестов на Python.
Идеально подходит для команд, которые хотят писать читаемые, надёжные и поддерживаемые автотесты.
Установка
# Основной пакет
pip install sputnikqa
# С интеграцией Allure
pip install sputnikqa[allure]
# С поддержкой httpx
pip install sputnikqa[httpx]
# С полной функциональностью (рекомендуется)
pip install sputnikqa[allure,httpx]
Основные возможности
-
restapi booster
- Типизированные модели ответов через
Pydantic - Автоматическая валидация статуса и тела ответа
- Декларативные секции API (
BaseApiSection) — по аналогии с Page Object - Билдеры запросов — для удобного формирования тел и multipart-загрузок
- Поддержка middleware — логирование, авторизация, retry и др.
- Встроенная интеграция с Allure:
- шаги с
@allure.step - прикрепление cURL, статуса и тела ответа
- шаги с
- Гибкий HTTP-клиент — поддержка
httpx* и кастомных реализаций - Поддержка async/await через
AsyncApiClient
*Для использования
httpxтребуется установка дополнительной зависимости:pip install sputnikqa[httpx] - Типизированные модели ответов через
Пример использования
1. Определите модель ответа
from sputnikqa.boosters.restapi.response_models import JsonResponse
class Pet(JsonResponse):
id: int | None = None
name: str
status: str
2. Создайте секцию API
from sputnikqa.boosters.restapi.sections.base import BaseApiSection
class PetSection(BaseApiSection):
base_url = "https://petstore.swagger.io/v2"
def get_pet_by_id(self, pet_id: int):
response = self.client.get(self.url_join(f"/pet/{pet_id}"))
return (
self.validator(response)
.validate_status(200)
.validate_response_model({200: Pet})
)
3. Напишите тест
def test_get_pet(pet_section):
pet = pet_section.get_pet_by_id(1).get_validated_model()
assert pet.name == "doggie"
assert pet.status == "available"
Архитектура
sputnikqa/
├── boosters/
│ └── restapi/
│ ├── clients/ # HTTP-клиенты (httpx* и др.)
│ ├── middleware/ # Middleware (логирование, авторизация)
│ ├── request_builders/ # Билдеры (тело, файлы)
│ ├── response_models/ # Базовые модели ответов
│ ├── sections/ # Базовый класс секций
│ └── validators/ # Валидаторы ответов
└── integrations/
└── allure/ # Интеграция с Allure
> *Клиент httpx доступен после установки: `pip install sputnikqa[httpx]`
Интеграции
Allure
Автоматически прикрепляет к отчёту:
- cURL-команду запроса
- HTTP-статус
- тело ответа
from sputnikqa.integrations.allure.client import ApiClientAllure
from sputnikqa.integrations.allure.middleware import AllureMiddleware
from sputnikqa.boosters.restapi.clients.httpx_client import HttpxClient
client = ApiClientAllure(HttpxClient(), middlewares=[AllureMiddleware()])
Требуется:
pip install sputnikqa[allure,httpx]
Документация и примеры
Полный пример тестов для Petstore API доступен в репозитории:
- Пример:
response_models.py - Пример:
sections/pet.py - Пример:
test_pet.py
Для разработчиков
Хотите расширить фреймворк?
- Реализуйте свой
BaseHttpClientдля кастомного HTTP-стека. - Напишите middleware для авторизации, retry или трассировки.
- Используйте
PrimitiveResponseдля обёртки примитивов (str,int,dict).
Лицензия
Distributed under the MIT License. See LICENSE for more information.
SputnikQA — ваш надёжный спутник в мире автоматизации тестирования.
📌 PyPI: https://pypi.org/project/sputnikqa/
📌 GitVerse: https://gitverse.ru/crenom/SputnikQA
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sputnikqa-0.0.5.tar.gz.
File metadata
- Download URL: sputnikqa-0.0.5.tar.gz
- Upload date:
- Size: 43.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.10.9 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ac421a0845493521b8d23d37620afe6f894dcbeba5b6c9aa4ab4814ee3fc698
|
|
| MD5 |
56a54c846e9a37113b21e99a066d77ab
|
|
| BLAKE2b-256 |
5a3f42c54f28eb7ad0d1c6470a26ccabeb05497b5575315319b0de8da8c00be6
|
File details
Details for the file sputnikqa-0.0.5-py3-none-any.whl.
File metadata
- Download URL: sputnikqa-0.0.5-py3-none-any.whl
- Upload date:
- Size: 67.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.10.9 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e31757943fd41a6ec0b7d8c66dc47f1ec6ec1813b9ac0da77058a9af48e7642
|
|
| MD5 |
b628a9d945f4c20a7533c214fe59bcc9
|
|
| BLAKE2b-256 |
6adea5d4bcaf15cf33b3e3b0e9f3091e0c7424a8ff8540184e1e703aed19fc0d
|