Skip to main content

Micro framework de testes unitários minimalista

Project description

my-test-ify - Micro-Framework de Testes, Modular e Funcional

Descrição

my-test-ify é a evolução do Test.py, projetado para ser um test-if de testes modular e extensível, criado com o objetivo de atender a uma variedade de cenários de teste sem a necessidade de dependências ou configurações complexas. Inspirado pelo feedback e pela prática contínua, o my-test-ify utiliza o paradigma funcional para criar uma estrutura minimalista, de fácil adaptação e com foco em modularidade.

Propósito

Após uma avaliação do Test.py, surgiu a necessidade de criar um framework mais flexível, que pudesse servir de referência para estudos e ser adaptado conforme a necessidade. A ideia central é fornecer uma estrutura minimalista onde o usuário possa adicionar novos tipos de teste com simplicidade, evitando dependências adicionais e mantendo uma curva de aprendizado baixa.

Escolha pelo Paradigma Funcional

A decisão de implementar o my-test-ify no paradigma funcional foi motivada pelo desejo de explorar esse paradigma em situações práticas. Além de oferecer uma oportunidade de aprendizado, a abordagem funcional favorece a modularidade e a criação de testes isolados e de fácil reutilização. Caso a solução funcional não atendesse às expectativas de extensibilidade, há um plano de transição para POO, com uso de padrões como Strategy e Template Method.

Funcionalidades e Estrutura Modular

  • Funções de Teste Modulares: Cada teste é uma função independente que retorna um valor booleano e uma mensagem personalizada. Isso permite adicionar novos tipos de teste facilmente.
  • Relatório e Resumo: my-test-ify inclui funções para exibir o resultado de cada teste, uma pilha de erros (stack trace) detalhada e um resumo final.
  • Gerenciamento Centralizado de Testes: O núcleo do my-test-ify organiza e disponibiliza as informações dos testes, mantendo um baixo acoplamento entre as funções de teste e o módulo principal.
  • Facilidade para Adicionar Novos Testes: Novos testes podem ser adicionados como funções independentes e registradas no núcleo, mantendo o sistema simples e de fácil manutenção.

Exemplo de Uso

O código a baixo esta no arquivo main.py, que esta na raiz do projeto:

from my_test_ify import my_test_ify

# Inicialização das funções do módulo testify
core, report = my_test_ify()

# O teste de igualdade é implicitamente chamado quando o quarto parâmetro de core é omitido.
core(1, 1, "Testando igualdade de inteiros")
core("Hello", "Hello", "Testando igualdade de strings")
core(4.0, 4.0, "Testando igualdade de números com ponto flutuante")

from my_test_ify.assertive import (greater_than, less_than, not_equals,
                                   raises_exception)
from my_test_ify.exceptions import TestFunctionError

core(1, 3, "Testando desigualdade de inteiros", not_equals)
core(3, 2, "Testando se é maior que", greater_than)
core(2, 3, "Testando se é menor que", less_than)

def func (a: int):
    raise TestFunctionError("Teste de exceção")

# O quinto parâmetro de core é uma lista de argumentos que são passados pela função testada. Neste caso, a função `func`.
core(TestFunctionError, func, "test8", raises_exception, [1])


print(report.report()) # Imprime o relatório de testes
print(report.failure_stack()[0]) # Imprime o stack da primeira falha, caso haja falhas. Se não houver falhas, imprime "No failures".
print(report.summary()) # Imprime o resumo dos testes

Principais Desafios

Um dos principais desafios foi a adaptação ao paradigma funcional, incluindo o uso de funções puras e a manipulação de variáveis no escopo de função, simulando o encapsulamento sem modificadores de visibilidade. Essa prática trouxe aprendizado valioso, com especial atenção para funções puras e encapsulamento através de variáveis locais.

Futuro do Projeto

O my-test-ify ainda está em fase inicial e poderá ser aplicado a futuros projetos. Com a modularidade alcançada, o próximo passo é validar sua flexibilidade e extensibilidade.

Pretendo continuar a evolução do my-test-ify, adicionando recursos e melhorias ao longo do tempo, mas mantendo a simplicidade, a facilidade e modularidade. Crescer mantendo a filosofia minimalista é o desafio.

Licença

Este projeto está licenciado sob a licença MIT. Para mais detalhes, veja o arquivo LICENSE.

instalação

Para instalar o my-test-ify, siga estas etapas:

  1. Abra o terminal
  2. Execute o comando:
pip install my-test-ify

Desenvolvido com muito café e curiosidade! ☕😄

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

my_test_ify-0.0.1.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

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

my_test_ify-0.0.1-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file my_test_ify-0.0.1.tar.gz.

File metadata

  • Download URL: my_test_ify-0.0.1.tar.gz
  • Upload date:
  • Size: 7.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.1

File hashes

Hashes for my_test_ify-0.0.1.tar.gz
Algorithm Hash digest
SHA256 a8010b958cd4df133941570139ccbc07762e7d5c5327ef3327d51110b42e25fa
MD5 427a2e905a041928edcdf241d14bea97
BLAKE2b-256 cbac99e7a0c2571d460e2c39dd035b848f58add8007e66e5cab0b4b7d7dc5ca4

See more details on using hashes here.

File details

Details for the file my_test_ify-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: my_test_ify-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.1

File hashes

Hashes for my_test_ify-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 42352fe7a54a9f760f35f292d8d19300240620145d8f937f1e6848051332e6c9
MD5 285f97bdf79a6d65b08870787704af3d
BLAKE2b-256 307173cf3d9de68345dcb161b897ca81b02f2b171b7eb11db2c79155ae7d541b

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