micro-test 0.0.2
Micro-framework de testes unitários minimalista
Requires Python: >=3.12

# micro_test - Micro-Framework de Testes Modulares e Funcionais

### DescriÃ§Ã£o

micro_test Ã© a evoluÃ§Ã£o do Test.py, projetado para ser um micro-framework 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 micro_test 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 micro_test 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, havia um plano de transiÃ§Ã£o para POO, com 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: micro_test 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 micro_test 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

```python
# InicializaÃ§Ã£o das funÃ§Ãµes do mÃ³dulo testify
core, summary, report, failure_stack = micro_test()

# 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 tests import not_equals, greater_than, less_than, raises_exception

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()) # Imprime o relatÃ³rio de testes
print(failure_stack()[0]) # Imprime o stack da primeira falha, caso haja falhas. Se nÃ£o houver falhas, imprime "No failures".
print(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 micro_test ainda estÃ¡ em fase inicial e poderÃ¡ ser aplicado a futuros projetos de bootcamp. Com a modularidade alcanÃ§ada, o prÃ³ximo passo Ã© validar sua flexibilidade e.

Pretendo continuar a evoluÃ§Ã£o do micro_test, 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](./LICENSE).

### instalaÃ§Ã£o

Para instalar o micro_test, siga estas etapas:

1. Abra o terminal
2. Execute o comando:

```bash
pip install micro_test
```

---

Desenvolvido com muito cafÃ© e curiosidade! â˜•ðŸ˜„