我的源文件位于src下,我的测试文件位于测试下。当我想运行一个测试文件时,比如说python myTest.py,我得到一个导入错误:“没有名为ASourceModule.py的模块”。运行测试时Python导入src模块
如何导入运行测试所需的所有模块?
我的源文件位于src下,我的测试文件位于测试下。当我想运行一个测试文件时,比如说python myTest.py,我得到一个导入错误:“没有名为ASourceModule.py的模块”。运行测试时Python导入src模块
如何导入运行测试所需的所有模块?
您需要到该目录添加到路径:
import sys
sys.path.append('../src')
如果你使用了很多也许把这个变成一个模块。
这不是OS不可知的。请参阅[答案](https://stackoverflow.com/a/34938623/1509695)在linux和Windows上都有相同的代码工作。 – matanster 2018-01-30 07:06:14
最好的(最易管理的)解决方案似乎是使用virtualenv和setuptools/distribute安装您的(src)软件包的一个副本。这样你的测试就可以在完全“安装”的系统上执行。
如果您不想将源路径添加到每个测试文件或更改您的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
是必要的,如果您想从其中运行测试。
您可以easy_install
或pip
轻松安装鼻子:
easy_install nose
或
pip install nose
鼻子伸出了很多单元测试更多的方式,更多地了解它,你可以查看他们的网站:https://nose.readthedocs.org/en/latest/
+1“如果你想从里面运行测试,tests目录中的`__init __。py`是必须的。” – 2018-02-14 15:13:15
在我的系统(Windows 10)上,我被要求做这样的事情:
import sys
import os
sys.path.append(os.path.dirname(os.path.realpath(__file__)) + "/../src")
直接追加相对目录sys.path
没有工作
[运行单元测试用典型的测试目录结构]的可能的复制(http://stackoverflow.com/questions/1896918/running-unittest-with-典型测试目录结构) – Asqiir 2017-03-05 08:12:39