Я уверен, что есть лучший способ сделать это, но если вас просто интересуют вызовы установщика свойств и вы хотите, чтобы получатель вел себя как исходное свойство, вы можете переопределить PropertyMock
, чтобы он вел себя как что:
class MyPropertyMock(PropertyMock):
def __init__(self, value=None):
super().__init__()
self.value = value
def __get__(self, obj, obj_type):
return self.value # the mock will not register these calls
def __set__(self, obj, val):
self.value = val
super().__set__(obj, val) # ensure the mock behavior in the setter
class Test_Machine:
def test(self):
real_machine = Machine()
mocked_property = MyPropertyMock(real_machine.value)
Machine.mode = mocked_property
real_machine.start()
print(mocked_property.mock_calls) # [call('running'), call('idle')]
...