您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Python中模拟ImportError

在Python中模拟ImportError

只需将猴子补丁添加builtins您自己的版本中,__import__当它意识到要在其上模拟错误的特定模块上正在调用它时,它可以引发您想要的任何事情。有关详细信息,请参阅文档。大致:

try:
    import builtins
except ImportError:
    import __builtin__ as builtins
realimport = builtins.__import__

def myimport(name, globals, locals, fromlist, level):
    if ...:
        raise ImportError
    return realimport(name, globals, locals, fromlist, level)

builtins.__import__ = myimport

代替...,您可以硬编码name == 'zope.component'或使用自己的回调更灵活地安排事务,这可以使导入在不同情况下按需提高,具体取决于您的特定测试需求,而无需您编写多个__import__类似的函数;-) 。

还需要注意的是,如果你使用的是什么,而不是import zope.component或者from zope.component import something,是from zope import component时,name届时将'zope',并'component'随后将是唯一的项目fromlist

:该__import__函数的文档说要导入的名称builtin(就像在Python 3中一样),但实际上您需要__builtins__-我已经编辑了上面的代码,因此无论哪种方式都可以。

python 2022/1/1 18:31:41 有214人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶