Jon*_*han 6 python logging patch mocking
如何在此测试模块(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
...
这可以通过首先导入和修补logging.getLogger
,然后才导入您的mut
import unittest
from unittest import mock
import logging
with mock.patch('logging.getLogger') as mock_method:
import mut
mock_method.assert_called_once_with('some_logger')
Run Code Online (Sandbox Code Playgroud)
这需要导入模块而不先执行它,不幸的是,除非您执行一些奇特的技巧(例如修改模块的解析树),否则这将无法工作,但您可能也不想这样做。
您可以做的是在导入后修改这些导入时引用,并用模拟对象手动替换它们,或者在安装模拟对象后重新执行语句,尽管我知道这用途有限。
归档时间: |
|
查看次数: |
2855 次 |
最近记录: |