我正在eclipse中开发python。因此,python src文件和测试文件位于不同的目录中。
问题是:我们如何在测试文件夹中运行命令行特定的测试文件?这些显然取决于src文件夹中的文件。
干杯
编辑:如果我跑
python test/myTestFile.py
我得到依赖性错误,例如。 ImportError:没有名为SrcFile1的模块
答案 0 :(得分:5)
您需要确保正确设置了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的包sear 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上的一些教程,以便设置它们以确定它们是否适合你的项目。
答案 1 :(得分:1)
这有两个主要的解决方案。或者,您需要使用例如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
可以是空文件。