2014-10-30 3 views
0

У меня есть ниже макете кода:Как написать чистый питон макет код с вложенной собственностью макете

mockSuper = mock.MagicMock() 
type(mockSuper).role = mock.PropertyMock(
    return_value=mock.MagicMock()) 
type(mockSuper.role).role = mock.PropertyMock(return_value='Super') 

Что я хочу mockSuper.role.role = "my value". Но приведенный выше код выглядит не очень просто. Это мой первый раз, используя python mock, поэтому я думаю, что должна быть какая-то лучшая версия этого кода. :)

ответ

0

Я просто сделал это:

>>> import unittest.mock 
>>> m = unittest.mock.Mock() 
>>> m.role.role = "some_value" 
>>> m.role.role 
'some_value' 

Но мне интересно, если вы действительно хотите, чтобы вставить строку в атрибуту. Возможно, этого достаточно, чтобы запустить что-то в первую очередь и в конце утверждать.

def test(): 
    mock = Mock() 
    mock_role_role = function_returning_mock_role_role(mock) 
    assert mock_role_role == mock.role.role 

Если у вас есть выбор, оставленный я не рекомендую испытывать для правоохранительных из-Деметров нарушений - если вы проверяете первым, к примеру.

Смежные вопросы