packageName\
__init__.py
src\
__init__.py
someFile.py
classes\
__init__.py
engine1.py
engine2.py
engine.py
tests\
__init__.py
myTests.py
temp\
我正在使用Python进行OOP,我有几个问题。
我知道__init__.py
将文件夹定义为模块,但我不明白这对我有什么好处。
如果需要从myTests.py
文件夹导入类,我将如何运行packageName/src/classes
?
$ python packageName/tests/myTests.py
上面的调用是我猜我打算运行我的测试。如果是结构,我该如何导入类?
from ..src.classes.engine1 import *
答案 0 :(得分:0)
正如@Mike所提到的,The Hitchhiker的包装指南将是一个很好的起点。
现在,就你的测试而言:出于各种原因,你不能只运行python packageName/tests/myTests.py
(具体来说,Python会对包布局感到困惑 - 当你使用python foo.py
运行文件时,它应该在一个包之外,因此from ..src …
行将因Attempted relative import in non-package
}而失败。
相反,您需要从外部开始测试...使用nose或unittest2之类的测试运行器,或者在顶层编写一个简单的脚本目录(即packageName/
上方):
$ ls
packageName/ run_tests
$ cat run_tests.py
from packageName.tests.myTests import main
main()
然后在main()
中添加myTests()
函数。
然而,使用测试运行器要简单得多。如果您written your tests correctly,则可以使用以下命令运行它们:
$ ls
packageName/
$ nosetests
..................................
----------------------------------------------------------------------
Ran 34 tests in 1.440s
OK