Ich habe erfolgreich eine Eigenschaft mit PropertyMock
verspottet, aber ich kann nicht herausfinden, wie überprüft werden kann, welche Instanz der Klasse diese Eigenschaft aufgerufen hat. Wie kann ich behaupten, dass die Eigenschaft an einem Objekt aufgerufen wurde, aber nicht an einem anderen?Stellen Sie sicher, dass ein PropertyMock für eine bestimmte Instanz aufgerufen wurde
Hier ist ein Beispiel, wo ich behaupten möchte, dass foo1.is_big
genannt wurde, und foo2.is_big
war nicht:
from mock import PropertyMock, patch
class Foo(object):
def __init__(self, size):
self.size = size
@property
def is_big(self):
return self.size > 5
f = Foo(3)
g = Foo(10)
assert not f.is_big
assert g.is_big
with patch('__main__.Foo.is_big', new_callable=PropertyMock) as mock_is_big:
mock_is_big.return_value = True
foo1 = Foo(4)
foo2 = Foo(9)
should_pass = False
if should_pass:
is_big = foo1.is_big
else:
is_big = foo2.is_big
assert is_big
# How can I make this pass when should_pass is True, and fail otherwise?
mock_is_big.assert_called_once_with()
print('Done.')
Der aktuelle Code wird passieren, wenn einer von ihnen genannt wird.
Ich glaube nicht, dass Sie können; Eigenschaften werden an der * Klasse * aufgerufen, nicht an der * Instanz *. – jonrsharpe