Cuando apagando los atributos de clase mox
utiliza setattr
. Por lo tanto
mock.StubOutWithMock(myinstance, 'myproperty')
myinstance.myproperty = 'goodbye'
es equivalente a
# Save old attribute so it can be replaced during teardown
saved = getattr(myinstance, 'myproperty')
# Replace the existing attribute with a mock
mocked = MockAnything()
setattr(myinstance, 'myproperty', mocked)
Tenga en cuenta que debido a myproperty
es una propiedad getattr
y setattr
se invocando __get__
y __set__
métodos de la propiedad, en lugar de realmente "burla a cabo" la propiedad en sí.
Por lo tanto, para obtener el resultado deseado solo tiene que ir un paso más allá y burlarse de la propiedad en la clase de la instancia.
mock.StubOutWithMock(myinstance.__class__, 'myproperty')
myinstance.myproperty = 'goodbye'
Tenga en cuenta que esto podría causar problemas si se desea al mismo tiempo simulacros de varias instancias de MyClass con diferentes valores myproperty
.
Utilice mayúsculas y minúsculas para las clases. –