如何模拟类实例属性?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何模拟类实例属性?相关的知识,希望对你有一定的参考价值。
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'
中的大写字母。
以上是关于如何模拟类实例属性?的主要内容,如果未能解决你的问题,请参考以下文章