Dec 20, 2016 15:26
Для меня было откровением, что в mock (MagicMock) можно не только указывать return_value, но и продолжать описывать свойства возвращаемого объекта.
Из реального кода:
mockos.return_value.new_keypair.return_value.private_key = "key"
Означает: Класс, который замокан, возвращает объект, у которого есть метод new_keypair, который возвращает объект, у которого есть свойство "private_key".
Это вместо нелепой конструкции, которую я использовал ранее:
mock_key = mock.MagicMock()
mock_key.private_key = "key"
mock_os_inst = mock.MagicMock(return_value=mock_key)
mockos = mock.MagicMock(return_value=mock_os_inst)
mock,
python,
py.test,
tests