У меня есть класс с некоторыми свойствами.В моем тесте мне нужно настроить прибор и проверить свойства.Однако патч работает только в функции прибора, а не при его вызове.Любая идея, как это исправить?
Вот упрощенная версия проблемы.Давайте предположим, что это мой класс Panda
:
class Panda(object):
def __init__(self, name):
self.panda_name = name
@property
def name(self):
return self.panda_name
, и это мой тест
import pytest
from unittest.mock import patch, PropertyMock
from tmp import Panda
@pytest.fixture
@patch(
'tmp.Panda.name',
new_callable=PropertyMock,
return_value="yuanyuan")
def fixture_panda(mk_name):
p = Panda("this name should not matter")
print(p.name) # print "yuanyuan"
return p
def test_panda_fixture(fixture_panda):
p = fixture_panda
print(p.name) # print "this name should not matter"
# this test fails
assert p.name == "yuanyuan"
Первая функция печати в fixture_panda
выдаст yuanyuan
, что означаетpropertyMock работает как положено.Однако вторая функция печати в test_panda_fixture
print this name should not matter
, что означает, что propertyMock здесь не работает.Любая идея, почему это происходит и как это исправить?