Вопрос проверяет понимание принципов автоматизированного тестирования и воспроизводимости тестов.
print не дает возможности автоматически проверить результат. Тесты должны выполняться без участия человека. Вывод в консоль нельзя надежно проанализировать в unit-тестах. Он не является контрактом поведения кода. Поэтому print подходит только для ручной отладки.
Unit-тесты должны быть полностью автоматическими и воспроизводимыми.
Использование print нарушает базовые принципы тестирования.
Нет программной проверки результата
Нужен ручной анализ вывода
Поведение зависит от окружения
Тест не может сам определить, прошел он или нет.
Консольный вывод:
Может измениться
Может быть отключен
Может смешаться с другими логами
Это делает тесты нестабильными.
Корректные инструменты:
Assertions
Mock-объекты
Проверка состояния
Тест должен завершаться success или failure автоматически.
print — инструмент отладки, а не тестирования. Unit-тесты должны проверять поведение кода без участия человека.