В вашей инфраструктуре тестирования, прежде чем вы начнете импортировать документацию, вы можете выполнить следующую задачу установки:
import __builtin__
self.savimport = __builtin__.__import__
def myimport(name, *a):
if name=='pwd': raise ImportError
return self.savimport(name, *a)
__builtin__.__import__ = myimport
и, конечно, в демонтаже вернули все на круги своя:
__builtin__.__import__ = self.savimport
Объяснение: все операции импорта проходят через __builtin__.__import__
, и вы можете переназначить это имя, чтобы такие операции использовали ваш собственный код (альтернативы, такие как ловушки импорта, лучше подходят для таких целей, как выполнение импорта из источников, не являющихся файловой системой, но для такие цели, как ваша, переопределение __builtin__.__import__
, как вы видите выше, дает действительно простой код).