【发布时间】:2023-03-27 17:41:01
【问题描述】:
我在 Python 2.7 中使用 MagicMock 来模拟对象。我正在模拟的其中一个类具有属性,其中一个在某些情况下可以引发 TypeError。
我想模拟这种行为,但我不知道如何:
-
如果访问
my_property,del my_mock.my_property将导致AttributeError,但我需要TypeError。 -
当
my_property被调用时,my_mock.my_property = MagicMock(side_effect=TypeError)会导致TypeError,但在仅被访问时不会。
我该怎么做?
【问题讨论】:
-
只是一个想法:第二个选项 +
my_mock.my_property = property(my_mock.my_property) -
也许让属性成为一个定义
__delattr__方法的类,该方法在删除时会改变其行为。 -
我们也许更准确地说,为 mock 对象定义一个
__delattr__方法,该方法将在删除时更改属性的行为。 -
我们将属性设为descriptor,在删除时会执行类似的操作。
标签: python python-2.7 unit-testing mocking magicmock