Instruction file imported from digitalinnovationone/harness-dio (
.github/instructions/testes.instructions.md). Copyright stays with the author.
Testes
- pytest puro. Sem
unittest.TestCase, semnose, sem classes de teste. - Nome:
test_<alvo>_<cenario>_<resultado_esperado>. Ex.:test_registrar_cedente_suspenso_viola_regra. - Três blocos separados por linha em branco: arranjo, ação, verificação.
Sem comentários
# arrange. - Uma asserção de comportamento por teste. Asserções auxiliares sobre o mesmo comportamento são aceitas.
- Dado compartilhado vai para fixture em
conftest.py, não para variável global. - Use
pytest.raisescommatch=— verificar só o tipo da exceção não basta. - Valor monetário é comparado como
Decimal, nunca comofloatnem como string formatada. - Data no teste é fixa e injetada (parâmetro
hoje). Nuncadate.today()dentro de teste de regra: teste que muda de resultado conforme o dia é teste quebrado. - Teste que exige banco leva
@pytest.mark.integracaoe fica fora do ciclo curto.
Proibido
- Teste sem asserção.
time.sleeppara sincronizar.mock.patchem código que é nosso: injete um fake que implementa oProtocol.- Enfraquecer ou apagar teste existente para fazer o build passar. Se um teste quebrou, ou o código está errado, ou é assunto para discussão — reporte.