I'm trying to patch a class method using mock as described in the documentation. The Mock object itself works fine, but its methods don't: For example, their attributes like call_count aren't updated, even though the method_calls attribute of the class Mock object is. More importantly, their return_value attribute is ignored:
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'> What am I doing wrong here?
EDIT: Passing a class Mock via the constructor doesn't work either, so this is not really related to the patch function.