使用 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
当我使用 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