我正在尝试模拟 MagicMock 实例函数的返回值,但结果并没有像我预期的那样:
>>> f = mock.MagicMock() # => <MagicMock id='139903823124048'>
>>> g = mock.MagicMock() # => <MagicMock id='139903823522512'>
>>> f.goo.return_value = g
>>> g # => <MagicMock name='mock.goo()' id='139903823522512'>
实例 g 没有改变但它的名字改变了?当我尝试时:
>>> f.goo(1,2)
>>> g.zoo('a')
>>> f.goo(3,4)
>>> f.goo.assert_has_calls([call(1,2), call(3,4)])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/lando/.local/lib/python2.7/site-packages/mock/mock.py", line 969, in assert_has_calls
), cause)
File "/home/lando/.local/lib/python2.7/site-packages/six.py", line 737, in raise_from
raise value
AssertionError: Calls not found.
Expected: [call(1, 2), call(3, 4)]
Actual: [call(1, 2), call().zoo('a'), call(3, 4)]
为什么 g 的通话会成为 f.goo 通话的一部分?甚至:
>>> f.goo.call_args_list # => [call(1, 2), call(3, 4)]