Іноді приватні функції модуля або класу просто ще мають бути вилучені внутрішні одиниці функціональності, які, можливо, заслуговують на власні тести. То чому б не перевірити їх? Ми будемо писати тести для них пізніше, якщо / коли вони будуть вилучені. То чому б не написати тести зараз, коли вони все ще є частиною одного файлу?
Демонструвати:
По-перше, я писав 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
містять більшість функціональних можливостей модуля. Кожен з них може бути публічною функцією іншого, "внутрішнього" модуля. Але вони ще не розвинулися і досить великі, щоб їх можна було витягнути для окремих файлів.
Тому тестування цих функцій вважається правильним, оскільки вони є важливими одиницями функціональності. Якби вони були в різних модулях як публічні функції, ми б їх протестували. То чому б не перевірити їх, коли вони ще не (або коли-небудь) були вилучені в інший файл?