Я пытаюсь пропатчить метод класса, используя макет, как описано в документации . Сам объект Mock работает нормально, но его методы не работают: например, их атрибуты, такие как call_count
, не обновляются, даже если атрибут method_calls
объекта класса Mock
есть. Что еще более важно, их атрибут return_value
игнорируется:
class Lib:
"""In my actual program, a module that I import"""
def method(self):
return "real"
class User:
"""The class I want to test"""
def run(self):
l = Lib()
return l.method()
with patch("__main__.Lib") as mock:
#mock.return_value = "bla" # This works
mock.method.return_value = "mock"
u = User()
print(u.run())
>>>
mock
<MagicMock name='Lib().method()' id='39868624'>
Что я здесь не так делаю?
EDIT: передача класса Mock
через конструктор также не работает, поэтому это на самом деле не связано с функцией patch
.