由于我们项目的结构和我们运行测试的方式,我们的库模块通过测试模块进行相对导入,例如:
from .. import foo_bar
现在,我想检查foo_bar
模块中的某个函数是否发出某些参数的警告。我试过这个:
from unittest.mock import patch
@patch('foo_bar.logging')
def test_distance(mock_logging):
foo_bar.baz(None)
assert mock_logging.warn.called
我得到了这个:
target = 'foo_bar'
def _importer(target):
components = target.split('.')
import_path = components.pop(0)
> thing = __import__(import_path)
E ImportError: No module named 'foo_bar'
/tmp/envs/foo/lib/unittest/mock.py:1058: ImportError
当我尝试更改这样的补丁行时:
@patch('..foo_bar.logging')
我收到了这个错误:
target = '..foo_bar'
def _importer(target):
components = target.split('.')
import_path = components.pop(0)
> thing = __import__(import_path)
E ValueError: Empty module name
/tmp/envs/foo/lib/unittest/mock.py:1058: ValueError
在这些情况下,知道如何使用patch
中的unittest.mock
函数吗?
答案 0 :(得分:1)
您可以使用导入的模块0.9333
0.7333
属性来实现相对导入模拟。
__name__