#python #pytest #monkeypatching
Вопрос:
Я пытаюсь исправить вызываемую функцию get_datetime()
.
Реальная дата время get_datetime()
находится под bobs/utils/dtutils
и делает:
def get_datetime() -gt; datetime: return datetime.now()
это используется в другом месте под bobs/generation
где глобально в generation.py
файле я делаю:
from utils.dtutils import get_datetime NAME = f"""{KMTER}/{get_datetime().strftime('%Y-%m-%d')}/dadsdge.fs"""
на участке обезьян я делаю:
monkey_patch.setattr( "bobs.generation.get_datetime", datetime.datetime(2021, 11, 18), )
это не работает. Меня now()
все равно вернут.
Я также пытался латать bobs.utils.dtutils.get_datetime
, но тоже безрезультатно. Он определенно находит его , потому что, если я составляю имя функции, о котором он говорит module does not contain bla
, поэтому я не понимаю, почему я не вижу его установленным…
Комментарии:
1. Не связаны, но зачем
get_datetime
вообще определять? Кажется ненужным уровнем косвенности (даже если вы придерживаетесь более простого определенияget_datetime = datetime.now
).2. Могу сделать. Дайте мне знать, если вы знаете, почему исправление обезьяны не удается. Похоже, это не сработает, если я просто попытаюсь исправить строку по-обезьяньи
3. «Это используется в другом месте под bobs/generation, где глобально в поколении. файл py, который я делаю […]»: в этом случае не пропущено ли в вашем патче «поколение», например «bobs.generation.generation.get_datetime»?
4. не извиняйся, я должен был написать bobs/generation.py