摘要:使用PyDev,我无法让一个Python模块(FooTest)导入同一个(test)源文件夹中的另一个(FooMock)。
我有两个源文件夹和四个Python模块,目录结构如下。最小的示例代码在问题的末尾。虽然我已经提供了很多信息,请不要让这个吓到你-这是一个简单的问题场景。在
PyDevProject/
src/ (source folder for prod code)
foo/
__init__.py
Bar.py
Foo.py
test/ (source folder for tests)
foo/
__init__.py
FooMock.py
FooTest.py
这里的问题是,当我试图在FooTest模块中导入FooMock类时,我得到了以下错误(运行PyUnit来运行FooTest测试):
^{pr2}$我尝试过的事情:
src/
目录下也可以,即使是放在唯一的Python包下(只要它在src/
下)。但这对我来说是不可接受的(在产品源文件夹中有测试代码)。在对此我能做些什么吗?在
代码:
# Code for Bar.py -----------------------------------------------------
class Bar(object):
def __init__(self, foo):
self.foo = foo
def next(self):
self.foo.incr()
# Code for Foo.py -----------------------------------------------------
class Foo(object):
def __init__(self):
self.num = 0
def incr(self):
self.num = self.num + 1
# Code for FooMock.py -------------------------------------------------
class FooMock(object):
def mock_incr(self):
self.hit = True
# Code for FooTest.py -------------------------------------------------
import unittest
from foo.Foo import Foo
from foo.Bar import Bar
from foo.FooMock import FooMock
class Test(unittest.TestCase):
def test_Foo(self):
foo = Foo()
foo.incr()
self.assertEquals(1, foo.num, "should be 1")
def test_Bar(self):
foo = FooMock()
bar = Bar(foo)
bar.next()
if __name__ == "__main__":
unittest.main()
目录截图: Image showing directory structure and PYTHONPATH as previously explained
在PYTHONPATH中有两个名为
foo
的模块。在第一个目录中,包foo
所在的目录中,确实没有名为FooMock
的模块。在你能把测试源目录下的模块}?在
foo
重命名成其他的吗?像footests
而不是{相关问题 更多 >
编程相关推荐