class MyClass:
def __init__ (a,b):
self.a = a
self.b = b
def myFunc():
myClass = MyClass(1,2)
print myClass.a, myClass.b
在我的测试中,我想运行myFunc但是在myFunc中我想让myClass返回'test1'和'test2'作为它的a和b属性。
所以我这样做了:
with patch('__main__.Myclass') as MockClass:
instance = MockClass.return_value
instance.a.return_value = 'test1'
instance.b.return_value = 'test2'
myFunc()
但是,结果是<MagicMock name=MyClass().a' id='2938383'>
.....而不是简单的test1和test2。
我究竟做错了什么?我对如何使用mock有什么误解?
return_value
用于callables,只需写:
with patch('__main__.MyClass') as MockClass:
instance = MockClass.return_value
instance.a = 'test1'
instance.b = 'test2'
myFunc()
# test1 test2
你必须在with语句中使用patch
这个类,注意'__main__.MyClass'
中的大写字母。