Как я могу издеваться над свойством, чтобы вызвать исключение?
Я использую MagicMock с Python 2.7 для макетов объектов. Один из классов, над которым я издеваюсь, имеет свойства, один из которых может поднять TypeError
в некоторых случаях.
Я хотел бы посмеяться над этим поведением, но я не могу понять, как:
del my_mock.my_property
вызоветAttributeError
еслиmy_property
доступ, но мне нужноTypeError
,my_mock.my_property = MagicMock(side_effect=TypeError)
вызываетTypeError
когдаmy_property
называется, но не тогда, когда к нему просто обращаются.
Как бы я это сделал?
1 ответ
Решение
Ты можешь использовать PropertyMock
для этого:
import mock
class A(object):
@property
def prop(self):
pass
a = A()
type(a).prop = mock.PropertyMock(side_effect=TypeError)
Если у вас есть доступ a.prop
это поднимет TypeError
,