Мне нужно исправить текущее время и время в тестах. Я использую это решение:
def _utcnow():
return datetime.datetime.utcnow()
def utcnow():
"""A proxy which can be patched in tests.
"""
# another level of indirection, because some modules import utcnow
return _utcnow()
Затем в моих тестах я делаю что-то вроде:
with mock.patch('***.utils._utcnow', return_value=***):
...
Но сегодня мне пришла в голову идея, что я мог бы сделать реализацию проще, исправляя __call__
функции utcnow
вместо дополнительного _utcnow
.
Это не работает для меня:
from ***.utils import utcnow
with mock.patch.object(utcnow, '__call__', return_value=***):
...
Как это сделать элегантно?