2013-03-14 163 views
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並抱怨?

+0

@MartijnPieters對不起,我的文書錯誤 – Meng 2013-03-14 12:58:44

+0

有沒有'foo'模塊? – 2013-03-14 13:02:47

+0

@MartijnPieters實際上,「foo」是包名,「Bar」是模塊名。 「foo/Bar.py」是我想嘲笑的目標。所以沒有「foo/Bar.py」文件,而是「mock_bar.py」。 – Meng 2013-03-14 13:10:33

回答

0

嘗試做import foo之前您的__import__線:我認爲它可以幫助。

相關問題