MagicMock and wrap



为什么"包装"关键字不适用于魔术对象?普通方法传递到包裹的对象,但不是"特殊"方法。在下面的测试中,第一个断言通过,第二个断言失败。

import mock
import unittest

class Foo(object):
    def bar(self):
        return 1
    def __len__(self):
        return 3

class TestWrap(unittest.TestCase):
    def test(self):
        foo = Foo()
        c = mock.MagicMock(wraps=foo)
        assert c.bar() == 1 # Passes
        assert len(c) == 3 # Fails

我在文档中找不到任何暗示这一点的东西。我想念什么吗?

由于魔术方法与普通方法不同[1],因此已专门实现了此支持

  • http://www.voidspace.org.uk/python/mock/magicmock.html#mock.magicmock

看来wraps功能并未为您包装__len__方法,您必须手动执行。

相关内容

  • 没有找到相关文章

最新更新