Skip to main content

Extensible test automation framework — built for QA engineers who value clean architecture and scalability.

Project description

🛰️ SputnikQA — Test Automation Framework

PyPI version Python versions License


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 доступен в репозитории:

Для разработчиков

Хотите расширить фреймворк?

  • Реализуйте свой 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sputnikqa-0.0.7b1.tar.gz (46.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sputnikqa-0.0.7b1-py3-none-any.whl (77.4 kB view details)

Uploaded Python 3

File details

Details for the file sputnikqa-0.0.7b1.tar.gz.

File metadata

  • Download URL: sputnikqa-0.0.7b1.tar.gz
  • Upload date:
  • Size: 46.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.13.14 Linux/5.15.0-144-generic

File hashes

Hashes for sputnikqa-0.0.7b1.tar.gz
Algorithm Hash digest
SHA256 1c0eda420fc0d9fecd678268f538d8ae50390be55f460969ae8437fa80dde974
MD5 55be215fa7a0f9d9ede248655f9de635
BLAKE2b-256 3df1050631ec2c1c4b8ad302dcb3228be6cc8151f2427088b82fab43cea56e59

See more details on using hashes here.

File details

Details for the file sputnikqa-0.0.7b1-py3-none-any.whl.

File metadata

  • Download URL: sputnikqa-0.0.7b1-py3-none-any.whl
  • Upload date:
  • Size: 77.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.13.14 Linux/5.15.0-144-generic

File hashes

Hashes for sputnikqa-0.0.7b1-py3-none-any.whl
Algorithm Hash digest
SHA256 0645c33abfd0d42229c57362fadfcffb27bd6a5aba86354b62674f02d4c8ff46
MD5 4ef650815628960c3e63622d363e8b6a
BLAKE2b-256 a09b4a7a6d824980d7351213dc8d285fb7cc2cd29ef3a2f1bd3e4d1794cc9eaa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page