Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

344
Vistas
Cómo burlarse de una propiedad

Estoy preguntando cómo simular una propiedad de clase en una prueba de unidad usando Python 3. Intenté lo siguiente, lo cual tiene sentido para mí siguiendo los documentos, pero no funciona:

foo.py:

 class Foo(): @property def bar(self): return 'foobar' def test_foo_bar(mocker): foo = Foo() mocker.patch.object(foo, 'bar', new_callable=mocker.PropertyMock) print(foo.bar)

Instalé pytest y pytest_mock y ejecuté la prueba de esta manera:

 pytest foo.py

Tuve el siguiente error:

 > setattr(self.target, self.attribute, new_attr) E AttributeError: can't set attribute /usr/lib/python3.5/unittest/mock.py:1312: AttributeError

Mi expectativa sería que la prueba se ejecute sin errores.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

El mecanismo de propiedad se basa en que el atributo de propiedad se defina en la clase del objeto. No puede crear un método o atributo de "propiedad similar" en una sola instancia de una clase (para una mejor comprensión, lea sobre el protocolo descriptor de Python)

Por lo tanto, debe aplicar el parche a su clase; puede usar la declaración with para que la clase se restaure correctamente después de su prueba:

 def test_foo_bar(mock): foo = Foo() with mock.patch(__name__ + "Foo.bar", new=mocker.PropertyMock) print(foo.bar)
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda