4

为什么 MagicMock 对象的“wraps”关键字不能始终如一地工作?普通方法被传递给被包装的对象,但不是“特殊”方法。在下面的测试中,第一个断言通过,第二个失败。

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

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

4

1 回答 1

1

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

wraps功能似乎没有__len__为您包装该方法,您必须手动完成。

于 2018-08-10T15:20:33.570 回答