- Data: 2025-12-13
- Reportado por: Teste Automatizado (Pytest)
- Severidade: Média (Impede a execução da API)
- Módulo:
posts/serializers.py
O EventsSerializer falhava ao iniciar devido a uma validação estrita do Django Rest Framework. O campo total_participants foi definido com o argumento source='total_participants', o que o framework considera um erro de redundância.
- Executar o comando de teste:
python -m pytest tests/unit/posts/test_performance_task.py - O sistema tenta carregar a aplicação.
- Resultado obtido:
AssertionError: It is redundant to specify source='total_participants' on field 'IntegerField'...
Técnica utilizada: Análise de Stack Trace. O erro no terminal indicou explicitamente a linha da falha e a razão. Não foi necessário debugger interativo, pois a mensagem de erro era descritiva.
Código problemático:
# posts/serializers.py
total_participants = serializers.IntegerField(
source="total_participants", read_only=True # ERRO: source igual ao nome do campo
)Remoção do argumento source, mantendo apenas o read_only.
# posts/serializers.py
total_participants = serializers.IntegerField(read_only=True)✓ O teste passou a ser coletado e executado sem erros de importação.
- Data: 2025-12-13
- Reportado por: Django Test Runner
- Severidade: Alta (Impede inicialização do projeto)
- Módulo:
settings.py/ Ambiente de Teste
Ao rodar testes isolados via linha de comando (python -m pytest), o Django lançava um erro ImproperlyConfigured porque a variável de ambiente SECRET_KEY não estava carregada no shell.
- Abrir terminal limpo.
- Rodar:
python -m pytest ... - Resultado obtido:
django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
Técnica utilizada: Leitura de Logs e Verificação de Variáveis.
Analisamos o traceback e constatamos que o settings.py tentava ler os.environ.get('SECRET_KEY') e recebia None.
Injeção da variável de ambiente diretamente na linha de execução do teste.
SECRET_KEY="chave-temporaria-teste" python -m pytest tests/unit/posts/test_performance_task.py✓ O Django inicializou corretamente e conectou ao banco de dados SQLite.
- Data: 2025-12-13
- Reportado por: Script de Análise de Performance
- Severidade: Média (Gera métricas falsas)
- Módulo:
tests/unit/posts/test_performance_task.py
O script de performance retornava 0 queries, indicando falsamente uma performance perfeita. O problema era que a API retornava erro 401 Unauthorized antes de consultar o banco, pois o cliente de teste não estava autenticado.
- Executar teste com
APIClientsem login. - Resultado obtido: Status 401, Queries: 0.
Técnica utilizada: Logging Estratégico (Print Debugging).
Adicionamos um print(response.status_code) no script, revelando o código 401.
Implementação de autenticação forçada no setUp do teste.
self.client.force_authenticate(user=self.user)✓ Status code passou a ser 200 e as queries reais (12) apareceram.
-
Análise de Stack Trace: Utilizada primariamente para resolver o Bug #1 (Serializer) e Bug #2 (Settings). A leitura atenta da pilha de chamadas permitiu localizar o arquivo exato e a linha onde a exceção foi levantada.
-
Logging Estratégico (Print Debugging): Fundamental no Bug #3. Como o erro era lógico (o teste "passava" mas não media nada), o debugger não parava em exceções. Inserir
print()estratégicos para exibir ostatus_coderevelou o comportamento oculto da aplicação. -
Isolamento de Testes: Para corrigir o Bug #1, utilizamos a execução isolada de um único arquivo de teste (
pytest tests/unit/posts/...) em vez de rodar a suíte completa. Isso reduziu o ciclo de feedback de minutos para segundos.