Как единичный тест, я хотел бы иметь возможность проверить, что импорт, определенный в наборе графических интерфейсов, имеет смысл программно. Я не хочу ничего выполнять, толькоПоддельный модуль, включающий атрибуты
import main_screen
и посмотреть, не падает ли что-либо во время цепочки импорта. У меня есть, насколько используя sys.modules трюк:
import my_fake_module
sys.modules['module_i_want_to_fake'] = my_fake_module
который прекрасно работает, до тех пор что-то не делает:
from module_i_want_to_fake import real_attribute
Тогда, конечно, я получаю ImportError, если я не добавить затушил method/class для my_fake_module, но есть слишком много, чтобы сделать это практичным.
Есть ли способ захватить импорт из my_fake_module, чтобы они всегда были успешными? Опять же, им ничего не нужно делать. Держу пари, что есть простой способ, но это спасаясь меня на данный момент ...
я не уверен, что вы имеете в виду 'что-нибудь падает over', но делает' MyMod = __import __ ("module_name") 'помочь? вы можете вызвать 'reload (mymod)', и вы можете запускать тесты по переменной? Вы также можете изменить функцию/метод '__import__' со своим собственным и иметь резервные копии и обработку ошибок, даже создавать фиктивные функции/заглушки« на лету ». – Torxed
«что-то падает» Я просто хочу увидеть, есть ли неработающие ссылки, опечатки и т. Д., Но я могу расширить его, чтобы найти сирот и другой анализ. Да, переопределение «__import__» звучит неплохо, но я пока не могу понять это или донести до него. Возможно, мне нужно сделать PEP302, создав нового импортера. – jambox