путь именно ттам где она импортится, и вызывается, не помогает
@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 дня потратил не смог понять
Опять путают моки и патчи
По хорошему у тебя не должно быть патчей в тестах https://t.me/advice17/31
бгы. ты наверное очень любил гевент раньше
такой кейс что без них не обойтись. Есть функция что вызывается внутри при запуске аппки, как я описал и парсит схемы, нужно еще добавить к ней тестовые схемы которых в реальности нет. Пытался запатчить в том же модуле где она вызывается как и нужно, но потерпел неудачу
Ну если будешь пытаться патчить, постоянно будет такая фигня
Ты же в тестах контролируешь запуск аппа, почему бы его не подменить/не передать туда доп параметры?
Надо сделать так, чтобы при создании приложения, ты мог передать свою функцию, которую ты сейчас хочешь пропатчить, либо передать туда нужный параметр
а как это сделать? если оно вызывется не напрмую
Ты буквально напрямую в тестах создаешь app, не?
да ,но функция оторую я патчу вызывается не там, а при импорте graphql_app и в том модуле где он инитиится и используются эта функция схем
Ну, есть вариант временно вставить логирования стек трейса в исходную функцию, чтобы надёжнее определить, откуда же оно вызывается, если уж это вызывает проблему.
Почему у тебя какая-то функция вызывается при импорте? Не должно быть такого вообще
не так выразился, имел ввиду, что импортится graphql_app из модуля где импользуется функция для патча. в крейт апп нет этой функции что я патчу, поэтому я и патчу по другому пути, где она импортируется
Либо ты считаешь что это деталь реализации и вообще делаешь вид что ее не существует. Либо передалываешь фабрику аппа так, чтобы это можно было подменить или настроить
первый вариант не понял, как это решит мою проблему?
Первый вариант означает что не существует никакой функции get_table_schemas и вообще схем и все работает на магии и никак не изменить. Соответственно, надо тестировать исходя из этого
а в чем причина тогда ,что эту проблему решить невозможно? вроде по доккументации патчей так можно делать
Обсуждают сегодня