ユニットテストでモックするときに問題があります。
#!/usr/bin/env python
import sys
sys.modules["foo.Bar"] = __import__("mock_bar")
import foo.Bar
print foo.Bar.__name__
4 行目にImportError
例外があります。3 行目でいくつかのモックを行ったので、理由はわかりません。インポートをモックする方法のリファレンスがここにあります。エラーメッセージは次のとおりです。
Traceback (most recent call last):
File "test.py", line 4, in <module>
import foo.Bar
ImportError: No module named foo.Bar
「import foo.Bar」は「__import__('foo.Bar')」と等しくなければなりません。その前に、sys.modules をハッキングして、モジュール「foo.Bar」が既にインポートされているふりをしました。なぜpythonはまだfoo.Barをインポートしようとして文句を言うのですか?