Neste projeto, iremos desenvolver uma API com FastAPI utilizando o Test-Driven Development (Desenvolvimento Guiado por Testes ou simplesmente TDD) que é uma metodologia que prioriza a criação de testes antes do código, vamos entender como criar tests com o pytest. Construindo testes de Schemas, Usecases e Controllers (teste de integração).
- Python
 - TDD com FastAPI + Pytest;
 - Docker
 - Pydantic
 - Pyenv + Poetry
 - Make
 - MongoDB
 - Git e Github
 
O TDD segue um ciclo de três etapas principais, conhecido como Red-Green-Refactor:
1 - Red (Vermelho - Escrever o teste)
- Escreva um teste unitário para a funcionalidade desejada.
 - Execute o teste e verifique que ele falha (já que o código ainda não foi implementado).
 
2 - Green (Verde - Fazer o teste passar)
- Implemente o código mínimo necessário para que o teste passe.
 - Execute os testes novamente e verifique que o código está funcionando.
 
3 - Refactor (Refatoração)
- Refatore o código para melhorar sua estrutura e qualidade sem alterar sua funcionalidade.
 - Execute os testes novamente para garantir que tudo ainda funciona corretamente.
 
Esse ciclo é repetido continuamente durante o desenvolvimento.
![]()  | 
|---|
| Diagrama de C4 da Store API | 
![]()  | 
|---|
| Database - Store API | 
Vamos utilizar Pyenv + Poetry, link de como preparar o ambiente abaixo:
oficial
Obs.: Caso queira acessar o banco direto pelo vscode recomendo usar a extensão do MongoDB
docker-compose up -d
docker-compose down
[ "$(docker ps -q)" ] && docker stop $(docker ps -q); [ "$(docker ps -aq)" ] && docker rm $(docker ps -aq); [ "$(docker images -q)" ] && docker rmi $(docker images -q); docker network prune -f


