使用 side_effect 模拟 python 属性

Using side_effect for mocking in python attributes

当我使用 mock.return_value.method.side_effect = [1, 2].

效果很好。 我在每个电话中接听 1,然后在下一个电话中接听 2

但是,我该如何为属性做呢?

我用object.text = "some-text"。并且有效。但是我需要 side_effect 属性 text。可能吗?

您可以使用 PropertyMock 对象来完成。将它附加到您的 Mock 必须与正常情况有所不同。这是一个例子:

from mock import Mock
from mock import PropertyMock

object = Mock()
type(object).attribute = PropertyMock(side_effect=[1, 2])

print object.attribute
print object.attribute