0
我在單元測試中嘲笑時遇到了問題。如何在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並抱怨?
@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