Kar*_*ran 35 python import unit-testing
我的源文件位于src下,我的测试文件位于测试中.当我想运行一个测试文件时,比如python myTest.py,我收到一个导入错误:"没有名为ASourceModule.py的模块".
如何从运行我的测试所需的源导入所有模块?
Tho*_*mas 29
您需要将该目录添加到路径:
import sys
sys.path.append('../src')
Run Code Online (Sandbox Code Playgroud)
如果你经常使用它,也许把它放到一个模块中.
And*_*ira 15
如果您不想为每个测试文件添加源路径或更改您的源路径PYTHONPATH,则可以使用nose来运行测试.
假设您的目录结构如下:
project
package
__init__.py
module.py
tests
__init__.py
test_module.py
Run Code Online (Sandbox Code Playgroud)
您应该在test_module.py(例如from package import module)中正常导入模块.然后通过nosetests在项目文件夹中运行来运行测试.您也可以通过执行特定的测试nosetests tests/test_module.py.
在__init__.py中tests,如果你想运行从它里面的测试目录是必要的.
您可以使用easy_install或轻松安装鼻子pip:
easy_install nose
Run Code Online (Sandbox Code Playgroud)
要么
pip install nose
Run Code Online (Sandbox Code Playgroud)
nose以更多方式扩展unittest,要了解更多信息,您可以查看他们的网站:https://nose.readthedocs.org/en/latest/
Fra*_*yce 10
在我的系统(Windows 10)上,我被要求做这样的事情:
import sys
import os
sys.path.append(os.path.dirname(os.path.realpath(__file__)) + "/../src")
Run Code Online (Sandbox Code Playgroud)
直接附加相对目录sys.path不起作用
最好(最易于管理)的解决方案似乎是使用 virtualenv 和 setuptools/distribute 来安装 (src) 包的开发副本。这样,您的测试将针对完全“安装”的系统执行。
在 pystest 文档中有一个关于“良好实践”的部分解释了这种方法,请参见此处。