Иногда закрытые функции модуля или класса - это просто пока не извлекаемые внутренние единицы функциональности, которые могут заслуживать собственных тестов. Так почему бы не проверить их? Мы будем писать тесты для них позже , если / когда они извлечены. Так почему бы не написать тесты сейчас, когда они все еще являются частью одного и того же файла?
Демонстрировать:
Сначала я написал module_a
. Теперь я хочу написать тесты для этого. Я хотел бы проверить «частную» функцию _private_func
. Я не понимаю, почему я не написал бы тест для него, если позже я все равно мог бы реорганизовать его в свой собственный внутренний модуль, а затем написать тесты для него.
Предположим, у меня есть модуль со следующими функциями (это может быть также класс):
def public_func(a):
b = _do_stuff(a)
return _do_more_stuff(b)
_do_stuff
и _do_more_stuff
являются «частными» функциями модуля.
Я понимаю идею, что мы должны проверять только открытый интерфейс, а не детали реализации. Однако вот в чем дело:
_do_stuff
и _do_more_stuff
содержат большую часть функциональности модуля. Каждый из них может быть публичной функцией отдельного «внутреннего» модуля. Но они еще не развиты и не достаточно велики, чтобы их можно было извлечь в отдельные файлы.
Поэтому тестирование этих функций кажется правильным, поскольку они являются важными единицами функциональности. Если бы они были в разных модулях как публичные функции, мы бы их протестировали. Так почему бы не протестировать их, когда они еще (или никогда) не извлечены в другой файл?