我在eclipse中开发python。因此,python src文件和测试文件位于不同的目录中。如何运行python测试文件
问题是:我们如何在测试文件夹中的命令行特定测试文件上运行?这些显然取决于src文件夹中的文件。
干杯
编辑:如果我运行
python test/myTestFile.py
我得到的相关性错误,例如。 ImportError:没有名为SrcFile1的模块
我在eclipse中开发python。因此,python src文件和测试文件位于不同的目录中。如何运行python测试文件
问题是:我们如何在测试文件夹中的命令行特定测试文件上运行?这些显然取决于src文件夹中的文件。
干杯
编辑:如果我运行
python test/myTestFile.py
我得到的相关性错误,例如。 ImportError:没有名为SrcFile1的模块
您需要确保您的PYTHONPATH设置正确,以便命令行解释程序可以找到您的软件包或从Eclipse Pydev内运行测试用例。 更新:另一种选择:使用nose运行测试可能会使事情变得更容易,因为它可以自动发现软件包和测试用例。
如果你的项目布局,像这样:
/home/user/dev/
src/pkg1/
mod1.py
test/
mod1_test.py
用途:PYTHONPATH=$HOME/dev/src python test/mod1_test.py
。我还建议使用distribute
和virtualenv
来设置您的项目以进行开发。
响应更新在评论质疑:
这提供了如何PYTHONPATH环境变量扩展Python的包烤焦 CH路径:
% PYTHONPATH=foo:bar python -c 'import sys; print sys.path[:3]'
['', '/home/user/foo', '/home/user/bar']
# exporting the variable makes it sticky for your current session. you can
# add this to your shell's resource file (e.g. ~/.profile) or source
# it from a textfile to save typing:
% export PYTHONPATH=bar:baz
% python -c 'import sys; print sys.path[:3]'
['', '/home/user/foo', '/home/user/bar']
% python -c 'import sys; print sys.path[:3]'
['', '/home/user/foo', '/home/user/bar']
上面应该让你在短期内会。 virtualenv使用分发和更高的一次性安装成本,但使用它们可获得更长期的收益 。当你有机会的时候,阅读一些关于SO的许多教程来设置它们,看看它们是否适合你的项目。
有2个主要的解决方案。无论如何,您需要使用例如PYTHONPATH环境变量来告诉测试源是哪里,或者您需要通过插入相关的__init__.py
文件来使测试和生产代码成为同一模块树的一部分。在后一种方法,该树可能是这个样子:
|-- qbit
| |-- __init__.py
| |-- master.py
| |-- policy.py
| |-- pool.py
| |-- synchronize.py
| `-- worker.py
`-- test
|-- __init__.py
|-- support.py
|-- test_policy.py
|-- test_synchronize.py
`-- test_worker.py
__init__.py
可以是一个空文件。
谢谢!我意识到pythonpath变量与运行测试的变量设置在同一行。有没有办法永久添加src文件夹,以便在运行测试时不需要重写路径?或者是什么发行和virtualenv做? – Karan
我会更详细地更新答案。 – samplebias