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有什么误解?
答案 0 :(得分:6)
return_value
适用于callables,只需写:
with patch('__main__.MyClass') as MockClass:
instance = MockClass.return_value
instance.a = 'test1'
instance.b = 'test2'
myFunc()
# test1 test2
你必须在{ - 1}}语句中注明班级,注意patch
中班级的大写字母。