Как высмеять импорт

Модуль A включает import B в своей верхней части. Однако в тестовых условиях я хотел бы mock B в A (mock A.B) и полностью воздержаться от импорта B.

На самом деле, B специально не устанавливается в тестовую среду.

A - это тестируемый модуль. Мне нужно импортировать A со всей его функциональностью. B - модуль, над которым мне нужно поиздеваться. Но как я могу высмеять B внутри A и остановить A от импорта настоящего B, если первое, что делает A - импортирует B?

(Причина, по которой B не установлен, в том, что я использую pypy для быстрого тестирования и, к сожалению, B пока не совместим с pypy.)

Как это можно сделать?

125
задан HaaLeo 13 March 2019 в 14:19
поделиться