Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

340
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda