我有一个Python模块试图导入一个模块,如果它失败,添加设置一个轻量级类来复制一些功能作为后备 .
如何编写涵盖两种情况的单元测试 - 模块存在时和模块不存在时?
try:
from foo import bar
except ImportError:
class bar(object):
def doAThing(self):
return "blah"
例如,如果存在bar,则单元测试将报告仅覆盖第二行,而模块的其余部分则不会 . Python的报道将在线路上报告缺少的测试,其中“except”到最后 .
1 回答
模块从
sys.path
数组加载 . 如果清除该阵列,则任何非核心导入都将失败 . 以下命令在ipython中的虚拟环境中运行,可以访问django您的另一种选择是使用两个虚拟环境 . 一个有模块,一个没有 . 这会使运行测试稍微困难一些 .
如果这不起作用,那么你可以添加一个路径到
sys.path
的开头,该路径有一个模块,在加载时会产生ImportError
. 这是有效的,因为加载了搜索sys.path
时找到的第一个匹配项,因此可以替换实际模块 . 以下就足够了:test.py
富/ __ init__.py