class MyClass:
def __init__ (a,b):
self.a = a
self.b = b
def myFunc():
myClass = MyClass(1,2)
print myClass.a, myClass.b
Run Code Online (Sandbox Code Playgroud)
在我的测试中,我想运行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()
Run Code Online (Sandbox Code Playgroud)
但是,结果是<MagicMock name=MyClass().a' id='2938383'>.....而不是简单的test1和test2.
我究竟做错了什么?我对如何使用mock有什么误解?
Dar*_*aut 11
return_value 是为了callables,只写:
with patch('__main__.MyClass') as MockClass:
instance = MockClass.return_value
instance.a = 'test1'
instance.b = 'test2'
myFunc()
# test1 test2
Run Code Online (Sandbox Code Playgroud)
你必须patch在with语句中的类,注意类的大写字母'__main__.MyClass'.
| 归档时间: |
|
| 查看次数: |
3323 次 |
| 最近记录: |