Contexto:
Atualmente, estou trabalhando em um pequeno projeto em Python. Geralmente estruturo minhas classes com alguns métodos públicos documentados, mas principalmente com os conceitos de alto nível (o que um usuário da classe deve conhecer e usar) e vários métodos ocultos (começando com sublinhado) que são responsáveis pelo processamento complexo ou de baixo nível.
Eu sei que os testes são essenciais para garantir a confiança no código e garantir que qualquer modificação posterior não interrompa o comportamento anterior.
Problema:
Para criar os métodos públicos de nível superior em uma base confiável, geralmente testo os métodos privados. Acho mais fácil descobrir se uma modificação de código introduziu regressões e onde. Isso significa que esses testes internos podem violar revisões menores e precisarão ser corrigidos / substituídos
Mas também sei que o método privado de teste de unidade é pelo menos um conceito disputado ou mais frequentemente considerado como uma má prática. A razão é: apenas o comportamento público deve ser testado ( ref. )
Questão:
Eu me preocupo em seguir as melhores práticas e gostaria de entender:
- por que o uso de testes de unidade em métodos privados / ocultos é ruim (qual é o risco)?
- Quais são as melhores práticas quando os métodos públicos podem usar processamento de baixo nível e / ou complexo?
Precisões:
- não é um como questionar. Python não tem um conceito verdadeiro de privacidade e métodos ocultos simplesmente não estão listados, mas podem ser usados quando você souber o nome deles
- Nunca aprendi regras e padrões de programação: minhas últimas aulas são dos anos 80 ... Aprendi principalmente idiomas por tentativa e falha e referências na Internet (o Stack Exchange é o meu favorito há anos)