тестах, но не выходит. Что интересно, то подобный приём с элементами встроенной библиотеки работает. Подскажите, что я делаю не так?
@pytest.fixture(scope="function", autouse=True)
def server_time(monkeypatch):
server_time = datetime.fromtimestamp(1)
import src.tools.utils
monkeypatch.setattr(src.tools.utils, "get_moscow_local_time", lambda: server_time)
return server_time
Так же хочу обратить внимание, что внутри самой фикстуры мок работает, но в самих тестах уже не работает
Совет очень дельный так-то. Манкипатчи — признак плохой архитектуры, которая как раз выливается вот в подобные проблемы
Бля, который раз зарекаюсь писать и спрашивать что-то. Вместо какого-то дельного совета, люди обычно высказывают своё мнение о том, как должен устроен проект без понимания всего контекста. В итоге их мнение и нахуй не всралось. Да, в отрыве от реальности можно чо угодно пиздануть с умным видом
Вообще-то так и делается) Лично в твоем случае только по примеру не поймешь, но обычно нет смысла делать типо monkeypatch("thisfunc", side_effect=return_value) assert thisfunc() == return_value конкретно для времени можно делать result = get_moscow_time() assert isinstance(result, expected_type) assert result > 0 и так далее можно безопасные сравнения придумать Если что-то другое, то можно как-то избавится от зависимости от времени по другому По маленькому примеру не скажешь А не работает потому что у тебя фикстура так-то не работает, ты мокаешь внутри нее, а потом возращаешь из нее и завершаешь мок если уж хотел так делать, так юзай yield @pytest.fixture(scope="function", autouse=True) def server_time(monkeypatch): server_time = datetime.fromtimestamp(1) import src.tools.utils monkeypatch.setattr(src.tools.utils, "get_moscow_local_time", lambda: server_time) yield server_time
с yield тоже не работает
Значит не то мокаешь, либо либа для мока не работает нужным образом, тут надо просто разные варианты попробовать
https://stackoverflow.com/questions/14654009/how-to-mock-a-function-defined-in-a-separate-python-module-using-mocks-patch/14654076#14654076 Может быть связано с особенностью мока функции в модуле
Опять манкипатчи
Обсуждают сегодня