[英]python unittest failing with relative import in source code
我有以下层次结构的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时,这些相对导入失败了。 谁能告诉我我在做什么错误。
在测试文件夹中创建一个__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)
我认为您的path
附加语句不正确。 您正在附加/bin
,它将在磁盘根目录中查找bin
。
sys.path.append("/usr/lib/bin")
问题是由于另一个同名模块来自python libs。 我重命名它,就解决了这个问题。 另一个有用的方法是将模块设置为PYTHONPATH。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.