Я пытаюсь исправить метод класса, используя mock, как описано в документация. Сам объект 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
Что я здесь делаю неправильно?
РЕДАКТИРОВАТЬ: Передача класса Mock
через конструктор также не работает, поэтому на самом деле это не связано с функцией patch
.