Ниже я добавил фиктивный код, который точно представляет то, что я пытаюсь сделать.
Я импортирую функцию из класса с псевдонимом, я делаю это, поскольку в классе выполняется версия с псевдонимом
То, что я пробовал:
- http://bhfsteve.blogspot.com/2012/06/patching-tip-using-mocks-in-python-unit.html Это не дает конкретного c решения проблемы.
- пропатчен
a.dummy.class.function.alias
как a.dummy.class.function
это разрешает выполнение, но не запускает alias_function_mocker (), поскольку в классе функция называется alias (), а не function () - Я пробовал работать как
a.dummy.class.function.alias
но это приводит к ошибке атрибута, поскольку псевдоним на самом деле не является атрибутом класса (потому что функция ())
from a.dummy.class import function as alias
def alias_function_mocker():
return 0
@patch("a.dummy.class.function.alias", side_effect=alias_function_mocker):
def test_function(mocked_function):
function_calling_alias()
return 0
Я думаю, что корень проблемы заключается в том, что файл класса вызывает функция с использованием псевдонима, и, похоже, нет способа исправить вызовы функций с псевдонимом. Самое простое и наивное решение, которое я могу придумать, - просто не использовать псевдоним.