Skip to main content

Pacote para testes automatizados em Python, com integração ao pytest, geração de dados fake, mocks avançados e manipulação de tempo.

Project description

📚 SmartTestPy - Framework Inteligente para Testes em Python

SmartTestPy é um pacote robusto e flexível para a criação de testes automatizados em Python. Com suporte ao pytest, unittest, geração de dados fake, mocks avançados e integração com APIs e bancos de dados, ele foi projetado para simplificar o processo de testes, desde o básico até casos avançados.


Funcionalidades Principais

  • Assertions personalizadas para validações detalhadas.
  • 🏷 Fixtures reutilizáveis para cenários complexos.
  • 🎭 Mocks inteligentes para testes isolados.
  • 🌐 Testes de API com validação de payloads, headers e status.
  • 🏦 Gerenciamento de banco de dados para testes integrados.
  • Manipulação de tempo com suporte ao freezegun.
  • 📊 Cobertura de código com relatórios automatizados.
  • Execução paralela de testes para maior performance.
  • 🛠 Compatível com frameworks como Django, Flask e FastAPI.
  • 🌍 Internacionalização (i18n) para mensagens e logs de testes.

Instalação

Instale o SmartTestPy diretamente do PyPI:

pip install SmartTestPy

💡 Requisitos: Python 3.6 ou superior.


🚀 Como Usar

Assertions Customizadas

from SmartTestPy.assertions import assert_status_code

class MockResponse:
    def __init__(self, status_code, text=""):
        self.status_code = status_code
        self.text = text

response = MockResponse(200, "OK")
assert_status_code(response, 200)

🧪 Fixtures e Mocks

from SmartTestPy.fixtures import fake_user

user = fake_user()
assert user['email'] is not None

🌐 Testes de API

from SmartTestPy.response_helpers import assert_json_response
from requests import Session  # Importação corrigida

client = Session()  # Criando um cliente para chamadas HTTP

response = client.get("https://api.example.com/user/1/")
assert_json_response(response, {"id": 1, "name": "John Doe"})

Manipulação de Tempo

from SmartTestPy.time_utils import fixed_time

assert fixed_time().strftime("%Y-%m-%d") == "2025-01-01"

🏃 Executando os Testes

pytest tests/ --maxfail=1 --disable-warnings -v

📈 Gerar relatório de cobertura:

pytest --cov=SmartTestPy --cov-report=html

🏰 Estrutura do Projeto

SmartTestPy/
│
├── SmartTestPy/                # 📞 Código do pacote
│   ├── __init__.py
│   ├── assertions.py           # ✅ Assertions personalizadas
│   ├── fixtures.py             # 🏷 Fixtures e mocks reutilizáveis
│   ├── response_helpers.py     # 🌐 Testes e validações de APIs
│   ├── time_utils.py           # ⏳ Manipulação de tempo
│
├── tests/                      # 🧪 Testes unitários
│   ├── test_assertions.py
│   ├── test_fixtures.py
│   ├── test_response_helpers.py
│   └── test_time_utils.py
│
├── setup.py                    # ⚙️ Configuração do pacote
├── pyproject.toml              # 📚 Configuração moderna
├── README.md                   # 📚 Documentação do projeto
├── LICENSE                     # 🌍 Licença MIT
└── MANIFEST.in                 # 🗉 Inclusão de arquivos extras

🌐 Compatibilidade

  • ✅ Python 3.6+
  • 🚀 Compatível com Django, Flask e FastAPI.
  • 🐍 Suporte a pytest, unittest e execução paralela com pytest-xdist.

📝 Licença

Distribuído sob a Licença MIT. Veja o arquivo LICENSE para mais detalhes.


👨‍💻 Autor

Desenvolvido por Roberto Lima 🚀✨


💬 Contato


Gostou do projeto?

Deixe uma ⭐ no repositório e compartilhe com a comunidade! 🚀✨

git clone https://github.com/robertolima-dev/SmartTestPy.git
cd SmartTestPy
pip install -e .

🌟 O que este README oferece?

  • 🎯 Descrição clara do projeto e seu propósito.
  • 🛠 Instruções detalhadas de instalação e uso prático.
  • 🧪 Guia de testes para garantir que o código funciona.
  • 🏰 Estrutura do projeto para facilitar a navegação.
  • 🔄 Seção de contribuição para quem deseja ajudar no desenvolvimento.
  • 📝 Licença e informações do autor para transparência.

💡 Casos de Uso Reais

1. Testando uma API REST com validação de status e conteúdo

from SmartTestPy.assertions import assert_status_code, assert_in_response
import requests

def test_api_user_creation():
    response = requests.post("https://api.exemplo.com/users", json={"name": "Ana"})
    assert_status_code(response, 201)
    assert_in_response(response, "Usuário criado com sucesso")

2. Utilizando fixtures para gerar dados dinâmicos em massa

def test_register_multiple_users(fake_user):
    users = [fake_user for _ in range(5)]
    for user in users:
        assert "@" in user["email"]

3. Mockando respostas HTTP para testes isolados

def test_service_with_mock_response(mock_response_200):
    response = mock_response_200
    assert response.status_code == 200
    assert response.text == "OK"

4. Manipulando o tempo em testes

from SmartTestPy.time_utils import fixed_time

def test_fixed_time():
    assert fixed_time().strftime("%Y-%m-%d") == "2025-01-01"

5. Integração com pytest e relatórios de cobertura

pytest tests/ --cov=SmartTestPy --cov-report=term-missing

6. Testando unicidade e geração de dados únicos

def test_unique_fake_users(fake_user):
    user1 = fake_user
    user2 = fake_user  # pytest chama a fixture novamente
    assert user1 != user2

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

smarttestpy-1.2.1.tar.gz (10.2 kB view details)

Uploaded Source

Built Distribution

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

smarttestpy-1.2.1-py3-none-any.whl (13.0 kB view details)

Uploaded Python 3

File details

Details for the file smarttestpy-1.2.1.tar.gz.

File metadata

  • Download URL: smarttestpy-1.2.1.tar.gz
  • Upload date:
  • Size: 10.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.17

File hashes

Hashes for smarttestpy-1.2.1.tar.gz
Algorithm Hash digest
SHA256 dac42fa13e8fa0fbd00f6152e002d557d9e9ff2069f39c19178b9741a473b95e
MD5 bd73065de7fc8918961852bfd8931915
BLAKE2b-256 6b6e07a6d63a7228c3dcada62e6d5446122e6c31f9f31b9f4da8d5212300a14d

See more details on using hashes here.

File details

Details for the file smarttestpy-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: smarttestpy-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 13.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.17

File hashes

Hashes for smarttestpy-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7ca0e1b17fc26766d2a50870bb5349a0832827ecc7ae596e4fbf6d35ec392d66
MD5 71e6c9e12e62dd29fb8f41620c9eac85
BLAKE2b-256 acadf95be91e937b65a74ab294359d776b2a4e492c8780f45d1d4e91e71aee0c

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