MagicMock 和包装
MagicMock and wrap
为什么 "wraps" 关键字不能始终如一地用于 MagicMock 对象?普通方法传递给包装对象,但不传递 "special" 方法。在下面的测试中,第一个断言通过,第二个断言失败。
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
我在文档中找不到任何建议。我错过了什么吗?
Because magic methods are looked up differently from normal methods [1], this support has been specially implemented
wraps
功能似乎没有为您包装 __len__
方法,您必须手动完成。
为什么 "wraps" 关键字不能始终如一地用于 MagicMock 对象?普通方法传递给包装对象,但不传递 "special" 方法。在下面的测试中,第一个断言通过,第二个断言失败。
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
我在文档中找不到任何建议。我错过了什么吗?
Because magic methods are looked up differently from normal methods [1], this support has been specially implemented
wraps
功能似乎没有为您包装 __len__
方法,您必须手动完成。