【问题标题】:Simulating lack of a dependency when testing a python script在测试 python 脚本时模拟缺少依赖项
【发布时间】:2011-07-20 03:53:17
【问题描述】:

从 python 脚本中临时隐藏已安装模块以测试它如何处理未安装模块的环境的最佳方法是什么?

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

【问题讨论】:

  • @Michael:你的意思是不导入它?我想我可以这样做,只是不会测试我的条件导入,这没什么大不了的。

标签: python testing module import dependencies


【解决方案1】:
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

【讨论】:

    【解决方案2】:

    更改您的 Python 路径。

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

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

    【讨论】:

    • 以后一定要放回去!
    • @Winston Ewert:“后记?”单元测试有“setUp”和“tearDown”来改变环境,你说的是这个吗?
    猜你喜欢
    • 2021-10-26
    • 1970-01-01
    • 2023-03-13
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-11
    相关资源
    最近更新 更多