Я пытаюсь исправить функцию, которую я не импортирую напрямую, но она используется тестируемым объектом. Сбой патча
Моя иерархическая структура выглядит следующим образом
--src
|--a
| |--b
| |-- parent.py
|
|--c
|--d
|--e
|-child.py
--test
|--test_child.py
child.py выглядит как
class ChildClass(ParentClass):
def child_method(self):
// do stuff - which needs to be tested
return self.parent_method()
parent.py выглядит как
from other_module import cool_function
class ParentClass:
attribute x = cool_function()
def parent_method():
print(x)
В моем тесте я пытаюсь проверить child_method () ChildClass, с поддельным значением атрибута X. Для этого я высмеиваю cool_function (), который я импортировал. Я делаю это так
test_child.py
from mock import patch
from c.d.e.child import ChildClass
@patch(a.b.c.cool_function) #Mocked cool_function()
def test_child_function(mock_cool_function):
mock_cool_function.return_value = Y # Mocked return value
child_obj = ChildClass()
child_obj.child_function()
assert child_ojb.x == Y # ===> Fails. Returns value by executing cool_function()
//other asserts
Хотел узнать, что здесь происходит не так. Я следовал этому руководству - Использование Python mock patch.object для изменения возвращаемого значения метода, вызываемого в другом методе