我正在尝试使用模拟修补类方法,如所述在文档中 http://www.voidspace.org.uk/python/mock/patch.html#patch。 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'>
我在这里做错了什么?
编辑:通过课程Mock
通过构造函数也不起作用,所以这与patch
功能。
我发现了我的错误:为了配置我的模拟实例的方法,我必须使用mock().method
代替mock.method
.
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())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)