gpt4 book ai didi

python - 尝试模拟模块时出现 ImportError

转载 作者:太空宇宙 更新时间:2023-11-03 11:07:44 25 4
gpt4 key购买 nike

我有一个正在测试的模块依赖于另一个在测试时不可用的模块。为了解决这个问题,我写了(基本上):

import mock
import sys

sys.modules['parent_module.unavailable_module'] = mock.MagicMock()
import module_under_test

只要 module_under_test 正在执行以下 import parent_moduleimport parent_module.unavailable_module 之一,它就可以正常工作。但是,以下代码会生成回溯:

>>> from parent_module import unavailable_module
ImportError: cannot import name unavailable_module

这是怎么回事?我可以在我的测试代码中做什么(不更改导入语句)来避免此错误?

最佳答案

好吧,我想我已经明白了。似乎在声明中:

from parent_module import unavailable_module

Python 寻找 parent_moduleattribute 称为 unavailable_module。因此,以下设置代码完全替换了 parent_module 中的 unavailable_module:

import mock
import sys

fake_module = mock.MagicMock()
sys.modules['parent_module.unavailable_module'] = fake_module
setattr(parent_module, 'unavailable_module', fake_module)

我测试了我所知道的四个导入习语:

import parent_module
import parent_module.unavailable_module
import parent_module.unavailable_module as unavailabe_module
from parent_module import unavailable_module

并且每个人都使用上面的设置代码。

关于python - 尝试模拟模块时出现 ImportError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14635791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com