相关疑难解决方法(0)

在导入模块之前进行模拟

如何在此测试模块(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...

python logging patch mocking

6
推荐指数
2
解决办法
2855
查看次数

doctest (python) 中的模拟 Y (from X import Y)

我正在尝试创建一个带有模拟功能的文档测试,该功能位于单独的模块中,并按如下方式导入

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那么它就可以工作。

但是对于通过上述方式导入的模拟函数有什么解决方案吗?

python testing doctest mocking

3
推荐指数
1
解决办法
1523
查看次数

我想引起一个ImportError

我正试图在我正在编写的一些代码中达到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发生,而只在我的测试中编写代码?

python unit-testing

3
推荐指数
1
解决办法
161
查看次数

标签 统计

python ×3

mocking ×2

doctest ×1

logging ×1

patch ×1

testing ×1

unit-testing ×1