【发布时间】:2016-03-27 14:07:39
【问题描述】:
我很困惑如何构建一个包含包和单元测试的项目。
我有这个目录结构:
TestProject/
├── package
│ ├── constants.py
│ ├── __init__.py
│ ├── package.py
│ └── tests
│ └── test_package.py
└── usage.py
constants.py
A = 1
__init__.py
from .package import give_A
package.py
from .constants import *
def give_A():
return A
usage.py
from package import give_A
print(give_A())
test_package.py
import unittest
from package import give_A
class Test_package(unittest.TestCase):
def test_simple(self):
self.assertEqual(give_A(), 1)
if __name__ == '__main__':
unittest.main()
在我尝试运行 test_package.py 模块之前一切正常,这是可以理解的,它无法导入包:
~/Python/TestProject/package/tests $ python3 test_package.py
Traceback (most recent call last):
File "test_package.py", line 3, in <module>
from package import give_A
ImportError: No module named 'package'
但是,这似乎是包/测试的首选结构。我怎样才能让它工作?还是我应该完全不同(结构、目录、导入、测试执行......)?
【问题讨论】:
-
试试
from package.package import give_A? -
ImportError: No module named package.package。它没有理由工作,因为包不在 PYTHONPATH 中,对吧? -
你想从哪里运行脚本?
-
尝试从包目录
python3 tests/test_package.py运行它 -
from .constants import * ... SystemError: Parent module '' not loaded, cannot perform relative import
标签: python python-import python-unittest