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 ответов

12 просмотров

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

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 Может быть связано с особенностью мока функции в модуле

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

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

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

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
31
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
Здравствуйте. Задача состоит в том, чтобы сделать real-time чат в мобильном приложении. После передачи сообщения пользователем через веб-сокеты, для основного и долговременног...
🐾
5
Где можно найти примеры эффективного "асинхронного" tcp сервера на C? Я видел select, kqueue, poll, epoll и т.д. Ввод-вывод неблокирующий, но обработка клиентов блокирующая
#
10
Всем доброго дня, ребят подскажите пожалуйста, если в курсе по ассемблеру используется MASM32, могу ли я использовать FASM? В чем явная разница и будет ли у меня все работать?
Botsman
17
Книга Юрова В.И пойдёт для обучения?
Botsman
24
Hi Everyone! To all Are you Looking for Interview Support at the Lowest Price? Look no further! Then contact us 👉We offer Interview Support :-for a low cost variety of tech...
Rambabu Nallamilli
3
Hello experts, Could someone kindly tell me how to run vacuum inside a plpgsql function? If you have any link please share. Thank you
Amol Palav
10
И ещё вопрос: можно ли типа как на дос как-то запариться и с помощью прерываний выводить текст, вместо функции printf ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
34
Карта сайта