2015-07-26 5 views
1

Пусть кто-то установить модуль в качестве MagicMock в заголовке файла питона:Как отключить mock.MagicMock на уровне модуля?

sys.modules['moduleABC'] = mock.MagicMock() 

Эта причина неприятностей, как moduleABC будет издеваться, когда я пытаюсь запустить целый список модульного тестирования.

Как я могу отменить это до фактического модуляABC в остальных файлах?

ответ

1

Я думаю, что лучший подход состоял бы в том, чтобы изменить этот модульный тест, чтобы использовать patch в функции setUp, а затем он будет применяться для всех тестов в этом модуле, но в конце будет возвращен, это также лучше, чем каждый тест будет иметь свой собственный, а не один макет для всех из них (если, например, вы проверяете количество времени, которое вы вызываете в модуле, вам придется накапливать все вызовы в тесте ...)

Другой опция должна использовать функцию tearDown и немного изменить способ, которым вы назначаете макет:

import moduleABC 

orig_abc = sys.modules['moduleABC'] 
sys.modules['moduleABC'] = mock.MagicMock() 

def tearDown(): 
    sys.modules['moduleABC'] = orig_abc 

Но я настоятельно рекомендую первый вариант, так как это лучший подход.

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