6

我正在使用带有 Python 2.7 的 MagicMock 来模拟对象。我正在模拟的其中一个类具有属性,其中一个TypeError在某些情况下可以引发 a。

我想嘲笑这种行为,但我不知道如何:

  • del my_mock.my_property将导致AttributeErrorifmy_property被访问,但我需要一个TypeError.
  • my_mock.my_property = MagicMock(side_effect=TypeError)导致TypeErrorwhen my_propertyis called,但不是仅在访问时。

我该怎么做?

4

1 回答 1

7

您可以PropertyMock为此目的使用:

import mock

class A(object):

    @property
    def prop(self):
        pass

a = A()
type(a).prop = mock.PropertyMock(side_effect=TypeError)

如果您现在访问a.prop它将引发TypeError.

于 2017-05-14T04:20:27.000 回答