Я бы посоветовал вам уменьшить область вашего насмешки.
Теперь вы применяете свой макет ко всему методу, используя декоратор @mock.patch('test_file_one.dt.datetime')
Вместо этого вы можете попробовать что-нибудьнапример:
def main(mock_datetime):
with mock.patch('test_file_one.dt.datetime') as mock_datetime:
mock_datetime.utcnow.return_value = datetime.utcnow() + timedelta(days=1)
first.print_datetime()
second.print_datetime()
В качестве альтернативы вы можете использовать метод fake_time
из библиотеки libfaketime-tz-wrapper
.
Тогда ваш подход будет выглядеть примерно так:
from libfaketime_tz_wrapper import fake_time
def main(mock_datetime):
with fake_time(datetime.utcnow() + timedelta(days=1)):
first.print_datetime()
second.print_datetime()
Я не проверял, работают ли мои предложения, но я много использовал fake_time
за последние 1,5 года и, кажется, очень полезен для подобных вопросов.