python 模拟返回模拟而不是 return_value 的方法?

python mock on method returning mock rather than return_value?

考虑以下(非常简单的)单元测试文件:

import unittest
from mock import Mock

class TestMuPE(unittest.TestCase):

  def test_01(self):
    mock_buffer = Mock()
    mock_buffer.frame_count.return_value(42)
    self.assertEquals(mock_buffer.frame_count(), 42)

    # => AssertionError: <Mock name='mock.frame_count()' id='4413645520'> != 42

我希望 mock_buffer.frame_count() 的计算结果为 42,但它返回的是模拟对象。我错过了什么?

P.S.: 我是 运行 Python 2.7.11,加载了 mock-2.0.0 backport。

您可以使用以下方法设置 return 值:

mock_buffer.frame_count.return_value = 42

而不是:

mock_buffer.frame_count.return_value(42)