运行测试时Python导入src模块

时间:2011-01-21 16:15:55

标签: python unit-testing import

我的源文件位于src下,我的测试文件位于测试中。当我想运行一个测试文件时,比如python myTest.py,我收到一个导入错误:“没有名为ASourceModule.py的模块”。

如何从运行测试所需的源中导入所有模块?

4 个答案:

答案 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_installpip

轻松安装鼻子
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)软件包的一个副本。这样,您的测试就会针对一个完全“安装”的系统执行。