170 похожих чатов

У меня есть файл urils.py, я пытаюсь его замокать в

тестах, но не выходит. Что интересно, то подобный приём с элементами встроенной библиотеки работает. Подскажите, что я делаю не так?
@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
Так же хочу обратить внимание, что внутри самой фикстуры мок работает, но в самих тестах уже не работает

7 ответов

18 просмотров

Совет очень дельный так-то. Манкипатчи — признак плохой архитектуры, которая как раз выливается вот в подобные проблемы

smqwe- Автор вопроса
Pavel Павлик
Совет очень дельный так-то. Манкипатчи — признак п...

Бля, который раз зарекаюсь писать и спрашивать что-то. Вместо какого-то дельного совета, люди обычно высказывают своё мнение о том, как должен устроен проект без понимания всего контекста. В итоге их мнение и нахуй не всралось. Да, в отрыве от реальности можно чо угодно пиздануть с умным видом

smqwe
Бля, который раз зарекаюсь писать и спрашивать что...

Вообще-то так и делается) Лично в твоем случае только по примеру не поймешь, но обычно нет смысла делать типо 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

smqwe
с yield тоже не работает

Значит не то мокаешь, либо либа для мока не работает нужным образом, тут надо просто разные варианты попробовать

https://stackoverflow.com/questions/14654009/how-to-mock-a-function-defined-in-a-separate-python-module-using-mocks-patch/14654076#14654076 Может быть связано с особенностью мока функции в модуле

Опять манкипатчи

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта