我在以下层次结构中有我的python源代码和unittest代码结构:
bin/
module1.py
module2.py
module3.py
test/
module1_test.py
模块中的代码如下: module1.py
from module2 import testMethod1, testMethod2
def testMethodY():
...
...
...
module2.py
from module3 import testMethod4
module3.py
def testMethod4():
module1_test.py
import unittest
import sys, os
path = os.path.dirname(__file__)
path = os.path.join(path, 'bin')
sys.path.append("/bin")
from module1 import testMethodY
...(Some code for unit test)
当我运行python module1_test.py时 它因导入错误而失败:
ImportError: cannot import name testMethod4
不确定是什么问题。如果我运行源代码,那么所有导入工作正常。但是使用python unittest这些相对导入失败了。谁能告诉我我在做什么错误。
答案 0 :(得分:4)
在tests文件夹中创建一个__init__.py
模块,并将以下内容添加到其中:
import sys, os
path = os.path.dirname(__file__)
path = os.path.join(path, 'bin')
if path not in sys.path:
sys.path.append(path)
答案 1 :(得分:2)
我认为您的path
追加声明不正确。您要附加/bin
,它会在磁盘根目录中查找bin
。
sys.path.append("/usr/lib/bin")
答案 2 :(得分:0)
问题是因为另一个来自python libs的同名模块。我重命名了它,这解决了这个问题。另一种有用的方法是将模块设置为PYTHONPATH。