Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在unittest中模拟python模块_Python_Mocking - Fatal编程技术网

如何在unittest中模拟python模块

如何在unittest中模拟python模块,python,mocking,Python,Mocking,我在unittest中进行模拟时遇到问题 #!/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): Fil

我在unittest中进行模拟时遇到问题

#!/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
回溯(最近一次呼叫最后一次):
文件“test.py”,第4行,在
导入foo.Bar
ImportError:没有名为foo.Bar的模块

“import foo.Bar”应该等于“\uuuu import\uuuu('foo.Bar')”,在此之前,我已经入侵sys.modules,假装模块“foo.Bar”已经导入。为什么python仍然尝试导入foo.Bar并抱怨?

在您的
\uuuu import\uuuu
行之前尝试执行
import foo
:我认为这可能会有所帮助。

@MartijnPieters为我的笔误感到抱歉有
foo
模块吗?@MartijnPieters实际上,“foo”是一个包名,“Bar”是一个模块名。“foo/Bar.py”是我想要模拟的目标。所以这里没有“foo/Bar.py”文件,而是“mock_Bar.py”。是的,我明白。您使用
\uuuu import\uuuu
而不是
importlib
模块的任何原因,顺便说一句?因为我使用的是python2.5,而不是Python3