如何在此测试模块(MUT)中进行修补和模拟 getLogger:
# Start of the module under test
import logging
log = logging.getLogger('some_logger')
# ...
Run Code Online (Sandbox Code Playgroud)
我想要做:
mock_logging.getLogger.return_value = Mock()
Run Code Online (Sandbox Code Playgroud)
但是我mock_logging在导入MUT之前无法创建,但是导入MUT已经调用了getLogger...
我正在尝试创建一个带有模拟功能的文档测试,该功能位于单独的模块中,并按如下方式导入
from foomodule import foo
def bar():
"""
>>> from minimock import mock
>>> mock('foo', nsdicts=(bar.func_globals,), returns=5)
>>> bar()
Called foo()
10
"""
return foo() * 2
import doctest
doctest.testmod()
Run Code Online (Sandbox Code Playgroud)
foomodule.py:
def foo():
raise ValueError, "Don't call me during testing!"
Run Code Online (Sandbox Code Playgroud)
这失败了。
如果我将 import 更改为import foomodule 并在各处使用foomodule.foo那么它就可以工作。
但是对于通过上述方式导入的模拟函数有什么解决方案吗?
我正试图在我正在编写的一些代码中达到100%的测试覆盖率.但是,下面的代码块给了我麻烦.
try:
from south.modelsinspector import add_introspection_rules
add_introspection_rules([], ["^localized_recurrence\.duration_field\.DurationField"])
except ImportError:
pass
Run Code Online (Sandbox Code Playgroud)
上面的代码是我测试模块的一部分.我需要在ImportError分支后面创建一个测试(不修改上面的代码).
我怎样才能以编程方式导致ImportError发生,而只在我的测试中编写代码?