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

В чем причина что функция не мокается? Вроде бы прописываю

путь именно ттам где она импортится, и вызывается, не помогает
@cutwater
def mock()
with patch('src.routers.graphql.graphql.get_table_schemas') as mock_function:
mock_function.return_value = 0
from src.server import create_app
app = create_app()
mock_function.assert_called_once()
return app


На скринах видно как она вызывается - сначала через импорт graphql_app , сам он в другом модуле что я указал как аргумент для патча вызывает метод класса в котором и используется get+table_schemas что нам и надо подменить, в чем ошибка? 4 дня потратил не смог понять

19 ответов

24 просмотра

Опять путают моки и патчи

По хорошему у тебя не должно быть патчей в тестах https://t.me/advice17/31

Tishka17
По хорошему у тебя не должно быть патчей в тестах ...

бгы. ты наверное очень любил гевент раньше

Dmitriy-Тiutiunnyk Автор вопроса
Tishka17
По хорошему у тебя не должно быть патчей в тестах ...

такой кейс что без них не обойтись. Есть функция что вызывается внутри при запуске аппки, как я описал и парсит схемы, нужно еще добавить к ней тестовые схемы которых в реальности нет. Пытался запатчить в том же модуле где она вызывается как и нужно, но потерпел неудачу

Dmitriy Тiutiunnyk
такой кейс что без них не обойтись. Есть функция ч...

Ну если будешь пытаться патчить, постоянно будет такая фигня

Dmitriy Тiutiunnyk
такой кейс что без них не обойтись. Есть функция ч...

Ты же в тестах контролируешь запуск аппа, почему бы его не подменить/не передать туда доп параметры?

Dmitriy Тiutiunnyk
такой кейс что без них не обойтись. Есть функция ч...

Надо сделать так, чтобы при создании приложения, ты мог передать свою функцию, которую ты сейчас хочешь пропатчить, либо передать туда нужный параметр

Dmitriy-Тiutiunnyk Автор вопроса
Tishka17
Ты же в тестах контролируешь запуск аппа, почему б...

а как это сделать? если оно вызывется не напрмую

Dmitriy Тiutiunnyk
а как это сделать? если оно вызывется не напрмую

Ты буквально напрямую в тестах создаешь app, не?

Dmitriy-Тiutiunnyk Автор вопроса
Tishka17
Ты буквально напрямую в тестах создаешь app, не?

да ,но функция оторую я патчу вызывается не там, а при импорте graphql_app и в том модуле где он инитиится и используются эта функция схем

Dmitriy Тiutiunnyk
такой кейс что без них не обойтись. Есть функция ч...

Ну, есть вариант временно вставить логирования стек трейса в исходную функцию, чтобы надёжнее определить, откуда же оно вызывается, если уж это вызывает проблему.

Почему у тебя какая-то функция вызывается при импорте? Не должно быть такого вообще

Dmitriy-Тiutiunnyk Автор вопроса
Tishka17
Почему у тебя какая-то функция вызывается при импо...

не так выразился, имел ввиду, что импортится graphql_app из модуля где импользуется функция для патча. в крейт апп нет этой функции что я патчу, поэтому я и патчу по другому пути, где она импортируется

Dmitriy Тiutiunnyk
не так выразился, имел ввиду, что импортится graph...

Либо ты считаешь что это деталь реализации и вообще делаешь вид что ее не существует. Либо передалываешь фабрику аппа так, чтобы это можно было подменить или настроить

Dmitriy-Тiutiunnyk Автор вопроса
Tishka17
Либо ты считаешь что это деталь реализации и вообщ...

первый вариант не понял, как это решит мою проблему?

Dmitriy Тiutiunnyk
первый вариант не понял, как это решит мою проблем...

Первый вариант означает что не существует никакой функции get_table_schemas и вообще схем и все работает на магии и никак не изменить. Соответственно, надо тестировать исходя из этого

Dmitriy-Тiutiunnyk Автор вопроса
Tishka17
Первый вариант означает что не существует никакой ...

а в чем причина тогда ,что эту проблему решить невозможно? вроде по доккументации патчей так можно делать

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
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...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
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
Карта сайта