如何在unittest中模拟python模块
问题描述:
我在单元测试中嘲笑时遇到了问题。如何在unittest中模拟python模块
#!/usr/bin/env python
import sys
sys.modules["foo.Bar"] = __import__("mock_bar")
import foo.Bar
print foo.Bar.__name__
我有一个ImportError
例外在第4行,我不知道为什么,因为我有做在第3行一些模拟还有就是如何嘲笑进口here参考。 这里的错误消息:
Traceback (most recent call last):
File "test.py", line 4, in <module>
import foo.Bar
ImportError: No module named foo.Bar
“进口foo.Bar”应该等于“__import __(‘foo.Bar’)”,而在此之前,我砍死sys.modules中假装模块“foo.Bar '已经被导入。为什么python仍然尝试导入foo.Bar并抱怨?
答
尝试做import foo
之前您的__import__
线:我认为它可以帮助。
@MartijnPieters对不起,我的文书错误 – Meng 2013-03-14 12:58:44
有没有'foo'模块? – 2013-03-14 13:02:47
@MartijnPieters实际上,“foo”是包名,“Bar”是模块名。 “foo/Bar.py”是我想嘲笑的目标。所以没有“foo/Bar.py”文件,而是“mock_bar.py”。 – Meng 2013-03-14 13:10:33