Python 如何从父目录导入模块?(单元测试目的)

Python 如何从父目录导入模块?(单元测试目的),python,unit-testing,import,Python,Unit Testing,Import,我刚刚完成了一个项目的核心部分,我想在继续之前使用unittest为它编写测试。我知道我以前应该这样做,但是当我开始的时候我不知道Python,所以。。不管怎样 我想要实现的是:我有一个主包的子包,其中包含了我想在其中测试的所有模块。我想在名为“tests”的子包中放入一个子包,或者包含我所有的测试用例的东西,我希望能够从包外聚合到一个测试套件中,这样最终我可以一次性运行整个项目的所有测试 结构是这样的: /projectPackage /projectPackage/package /proj

我刚刚完成了一个项目的核心部分,我想在继续之前使用unittest为它编写测试。我知道我以前应该这样做,但是当我开始的时候我不知道Python,所以。。不管怎样

我想要实现的是:我有一个主包的子包,其中包含了我想在其中测试的所有模块。我想在名为“tests”的子包中放入一个子包,或者包含我所有的测试用例的东西,我希望能够从包外聚合到一个测试套件中,这样最终我可以一次性运行整个项目的所有测试

结构是这样的:

/projectPackage
/projectPackage/package
/projectPackage/package/\__init__.py (empty)
/projectPackage/package/someModule.py
/projectPackage/package/... (more modules)
/projectPackage/package/testing.py (runs all the tests in /tests/)
/projectPackage/package/tests
/projectPackage/package/tests/\__init__.py (empty)
/projectPackage/package/tests/someModuleTests.py
我遇到的问题是:

someModuleTests必须从父包导入someModule,以便测试其方法。这似乎不起作用。我会遇到各种错误,如:

Attempted relative import beyond toplevel package

不管怎样,我想这只是因为我是一个巨蟒迷!我对如何为这个项目做这件事有自己的想法,因为当然每个都是不同的,但是任何关于中大型python项目结构的一般性建议都是值得赞赏的。

从父目录运行单元测试,这样目录就位于PYTHONPATH中(当前的工作目录始终是)。这是通过从父目录执行测试文件来完成的,或者通过使用类似nosetest的东西来递归地查找包中的所有测试


不要使用相对导入,它们会导致这样的事情。不要攻击PYTHONPATH和/或sys.path来尝试修复它。

如果可以执行代码,那么PYTHONPATH应该已经正确设置。您需要做的是指定要导入的模块,例如

import projectPackage.package.someModule

考虑到您正在使用命令行工具来运行测试,您可以按照以下步骤进行操作:

python -m unittest package.tests.someModuleTests

好的,很好,谢谢。我会投票给你,但我没有足够的声誉:没问题,如果你足够喜欢,你可以选择我的过去作为答案,我想:-)