Контекст:
В настоящее время я работаю над небольшим проектом на Python. Я обычно структурирую свои классы с помощью некоторых открытых методов, которые задокументированы, но в основном имеют дело с концепциями высокого уровня (то, что пользователь класса должен знать и использовать), а также с кучей скрытых (начиная с подчеркивания) методов, которые отвечают за сложная или низкоуровневая обработка.
Я знаю, что тесты необходимы, чтобы придать уверенность в коде и гарантировать, что любая последующая модификация не нарушит предыдущее поведение.
Проблема:
Чтобы создать общедоступные методы более высокого уровня на основе доверия, я обычно проверяю закрытые методы. Я нахожу более легким найти, ввела ли модификация кода регрессии и где. Это означает, что эти внутренние тесты могут выйти из строя при незначительных изменениях и должны быть исправлены / заменены
Но я также знаю , что модульное тестирование частного метод, по крайней мере спорная концепция или чаще рассматриваются как плохая практика. Причина в том, что следует проверять только публичное поведение ( ссылка )
Вопрос:
Я забочусь о следовании передовой практике и хотел бы понять:
- почему плохо использовать модульные тесты для закрытых / скрытых методов (каков риск)?
- Каковы лучшие практики, когда общедоступные методы могут использовать низкоуровневую и / или сложную обработку?
Precisions:
- это не как вопрос. Python не имеет истинной концепции конфиденциальности, и скрытые методы просто не перечислены, но могут использоваться, когда вы знаете их имя
- Меня никогда не учили правилам и шаблонам программирования: мои последние уроки были с 80-х годов ... В основном я учил языки методом проб и неудач и ссылками в Интернете (Stack Exchange - мой любимый в течение многих лет)