在somemod.py
中给出这样的代码:
try:
Import cStringIO as StringIO
except ImportError:
import StringIO
如何测试'后备'分支?
(使用案例:试图达到100%的覆盖率。同意这是一个有点愚蠢的目标:))
并发症:
test_somemod.py
运行import somemod
答案 0 :(得分:1)
首先,创建一个用于测试的函数:
>>> def somecode():
... try:
... import cStringIO as StringIO
... print 'got cStringIO'
... except ImportError:
... import StringIO
... print 'got StringIO'
>>> somecode()
got cStringIO
现在,正如here所解释的那样,您可以访问导入功能:
>>> import __builtin__
>>> original_import = __builtin__.__import__
>>> def import_hook(name, *args, **kwargs):
... if name == 'cStringIO': raise ImportError('test case module import failure')
... else: return original_import(name, *args, **kwargs)
...
>>>
>>> __builtin__.__import__ = import_hook
>>> somecode()
got StringIO
在测试用例之后,您应该将其设置回来:
>>> __builtin__.__import__ = original_import