python – 如何模拟导入

模块A包括在其顶部的导入B.但是在测试条件下,我想在A(mock A.B)mock B,并完全禁止进口B.

事实上,B并没有在测试环境中有意的安装。

如何做到这一点?

您可以在导入A之前分配给sys.modules [‘B’]以获得所需的内容:

test.py:

import sys
sys.modules['B'] = __import__('mock_B')
import A

print(A.B.__name__)

A.py:

import B

注意B.py不存在,但是当运行test.py没有返回错误,打印(A.B .__ name__)打印mock_B。你仍然需要创建一个mock_B.py,你在这里模拟B的实际函数/变量等。或者你可以直接分配一个Mock():

test.py:

import sys
sys.modules['B'] = Mock()
import A
http://stackoverflow.com/questions/8658043/how-to-mock-an-import

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:python – 如何模拟导入