2011-03-22 55 views
4

从python脚本中暂时隐藏已安装模块以测试它如何处理未安装模块的环境的最佳方法是什么?在测试python脚本时模拟缺乏依赖关系

我想避免为了测试而卸载模块。

+0

不包括它? – 2011-03-22 02:55:31

+0

@Michael:你的意思是不要导入它?我想我可以这样做,那就是不会测试我的条件导入,这不是什么大问题。 – Acorn 2011-03-22 03:01:21

回答

6
import sys 
sys.modules['numpy']=None 

设置sys.modules['numpy']=None使Python的认为它已经尝试和失败导入numpy。在进口numpy随后尝试现在提高ImportError

try: 
    import numpy 
except ImportError as err: 
    print(err) 
    # No module named numpy 

删除sys.modules['numpy']允许numpy要导入正常:

del sys.modules['numpy'] 
import numpy 
3

更改您的Python路径。

sys.path中的目录顺序显示了搜索顺序。

您可以在测试中更改sys.path以更改搜索顺序。

+0

只需确保将其放回! – 2011-03-22 03:06:31

+0

@Winston Ewert:“Afterwords?”单元测试有“setUp”和“tearDown”来改变环境,那是你在说什么? – 2011-03-22 09:45:42

+0

是的,否则你的其他测试会中断。 – 2011-03-22 12:47:20