Ich benutze MagicMock mit Python 2.7, um Objekte zu mocksen. Eine der Klassen, die ich verspotte, hat Eigenschaften, von denen eine in einigen Fällen eine TypeError
auslösen kann.Wie kann ich eine Eigenschaft verspotten, um eine Ausnahme auszulösen?
Ich möchte, dass das Verhalten verspotten, aber ich kann nicht herausfinden, wie:
del my_mock.my_property
bewirkt eineAttributeError
wennmy_property
zugegriffen wird, aber ich brauche eineTypeError
.my_mock.my_property = MagicMock(side_effect=TypeError)
verursacht eineTypeError
wennmy_property
genannt ist, aber nicht, wenn es nur abgerufen.
Wie würde ich das tun?
Nur eine Idee: 2. Option + 'my_mock.my_property = Eigenschaft (my_mock.my_property)' –
Vielleicht machen Sie die Eigenschaft eine Klasse, die definiert ein ['' '__delattr__'''] (https: //docs.python. org/3/reference/datamodel.html # object .__ delattr__) Methode, die ihr Verhalten beim Löschen ändert. – wwii
Unserer vielleicht ist es genauer zu sagen, definieren Sie eine '' '__delattr__''' Methode für das Mock-Objekt, das das Verhalten der Eigenschaft ändern wird, wenn es gelöscht wird. – wwii