我的源文件位于src下,我的测试文件位于测试中。当我想运行一个测试文件时,比如python myTest.py,我收到一个导入错误:“没有名为ASourceModule.py的模块”。
如何从运行测试所需的源中导入所有模块?
答案 0 :(得分:30)
您需要将该目录添加到路径:
import sys
sys.path.append('../src')
如果您经常使用它,可能会将其放入模块中。
答案 1 :(得分:14)
如果您不想为每个测试文件添加源路径或更改PYTHONPATH
,则可以使用nose来运行测试。
假设您的目录结构如下:
project
package
__init__.py
module.py
tests
__init__.py
test_module.py
您应该在test_module.py
中正常导入模块(例如from package import module
)。然后通过在项目文件夹中运行nosetests
来运行测试。您还可以通过执行nosetests tests/test_module.py
来运行特定测试。
如果要从内部运行测试,则__init__.py
目录中的tests
是必需的。
您可以使用easy_install
或pip
easy_install nose
或
pip install nose
nose以更多方式扩展unittest,要了解更多信息,您可以查看他们的网站:https://nose.readthedocs.org/en/latest/
答案 2 :(得分:7)
在我的系统(Windows 10)上,我被要求做这样的事情:
import sys
import os
sys.path.append(os.path.dirname(os.path.realpath(__file__)) + "/../src")
将相对目录直接附加到sys.path
无法正常工作
答案 3 :(得分:0)
最好的(最易管理的)解决方案似乎是使用virtualenv和setuptools / distribute来安装(src)软件包的一个副本。这样,您的测试就会针对一个完全“安装”的系统执行。