[英]Python import src modules when running tests
我的源文件位于 src 下,我的测试文件位于 tests 下。 当我想运行一个测试文件时,比如 python myTest.py,我收到一个导入错误:“No module named ASourceModule.py”。
如何从运行测试所需的源代码导入所有模块?
您需要将该目录添加到路径中:
import sys
sys.path.append('../src')
如果你经常使用它,也许可以把它放到一个模块中。
如果您不想将源路径添加到每个测试文件或更改您的PYTHONPATH
,您可以使用nose来运行测试。
假设你的目录结构是这样的:
project
package
__init__.py
module.py
tests
__init__.py
test_module.py
您应该在test_module.py
正常from package import module
(例如from package import module
)。 然后通过在项目文件夹中运行nosetests
测试来运行测试。 您还可以通过执行nosetests tests/test_module.py
来运行特定测试。
如果您想从其中运行测试,则tests
目录中的__init__.py
是必需的。
您可以使用easy_install
或pip
轻松安装鼻子:
easy_install nose
要么
pip install nose
鼻子以更多方式扩展单元测试,要了解更多信息,您可以查看他们的网站: https : //nose.readthedocs.org/en/latest/
在我的系统(Windows 10)上,我需要做这样的事情:
import sys
import os
sys.path.append(os.path.dirname(os.path.realpath(__file__)) + "/../src")
将相对目录直接附加到sys.path
不起作用
最好(最易于管理)的解决方案似乎是使用 virtualenv 和 setuptools/distribute 来安装 (src) 包的开发副本。 这样,您的测试将针对完全“安装”的系统执行。
在 pystest 文档中有一个关于“良好实践”的部分解释了这种方法,请参见此处。
对于那些使用Pytest 的人:
__init__.py
确保src
被识别为 package。conftest.py
。test
目录中没有__init__.py
。看起来像这样:
project
conftest.py
src
__init__.py
module.py
test
test_module.py
并确保module.py
包含以下行:
from src import module
来源: Pytest 文档
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.