我如何模拟 属性 来引发异常?
How can I mock a property to raise an exception?
我在 Python 2.7 中使用 MagicMock 来模拟对象。我正在模拟的 类 之一具有属性,在某些情况下其中之一可以引发 TypeError
。
我想嘲笑这种行为,但我不知道如何:
del my_mock.my_property
如果访问 my_property
将导致 AttributeError
,但我需要 TypeError
.
my_mock.my_property = MagicMock(side_effect=TypeError)
在 my_property
被 调用时导致 TypeError
,但仅在访问时不会。
我该怎么做?
您可以使用 PropertyMock
来达到这个目的:
import mock
class A(object):
@property
def prop(self):
pass
a = A()
type(a).prop = mock.PropertyMock(side_effect=TypeError)
如果您现在访问 a.prop
,它将引发 TypeError
。
我在 Python 2.7 中使用 MagicMock 来模拟对象。我正在模拟的 类 之一具有属性,在某些情况下其中之一可以引发 TypeError
。
我想嘲笑这种行为,但我不知道如何:
del my_mock.my_property
如果访问my_property
将导致AttributeError
,但我需要TypeError
.my_mock.my_property = MagicMock(side_effect=TypeError)
在my_property
被 调用时导致TypeError
,但仅在访问时不会。
我该怎么做?
您可以使用 PropertyMock
来达到这个目的:
import mock
class A(object):
@property
def prop(self):
pass
a = A()
type(a).prop = mock.PropertyMock(side_effect=TypeError)
如果您现在访问 a.prop
,它将引发 TypeError
。