MyTetra Share
Делитесь знаниями!
Заглушки (mock) для свойств (property) в Python
Время создания: 20.04.2019 14:41
Автор: br0ke
Текстовые метки: python, unit, test, unittest, mock, property, PropertyMock
Раздел: Информационные технологии - Python - Библиотеки - unittest
Запись: and-semakin/mytetra_data/master/base/1555753287u0u9to1ujk/text.html на raw.githubusercontent.com

Если нужно поставить заглушку (mock) на свойство объекта во время тестов, то не получится использовать обычный метод mock.patch -- свойство заменится на метод-заглушку и перестанет быть свойством. Для того, чтобы правильно замокать свойство, нужно использовать PropertyMock:


class MyClass:

@property

def last_transaction(self):

# an expensive and complicated DB query here

pass


def test(unittest.TestCase):

with mock.patch('MyClass.last_transaction', new_callable=PropertyMock) as mock_last_transaction:

mock_last_transaction.return_value = Transaction()

myclass = MyClass()

print myclass.last_transaction

mock_last_transaction.assert_called_once_with()

 
MyTetra Share v.0.65
Яндекс индекс цитирования