Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

342
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!