2011-03-10 73 views
1

我在eclipse中开发python。因此,python src文件和测试文件位于不同的目录中。如何运行python测试文件

问题是:我们如何在测试文件夹中的命令行特定测试文件上运行?这些显然取决于src文件夹中的文件。

干杯

编辑:如果我运行

python test/myTestFile.py 

我得到的相关性错误,例如。 ImportError:没有名为SrcFile1的模块

回答

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。我还建议使用distributevirtualenv来设置您的项目以进行开发。

响应更新在评论质疑:

这提供了如何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的许多教程来设置它们,看看它们是否适合你的项目。

+0

谢谢!我意识到pythonpath变量与运行测试的变量设置在同一行。有没有办法永久添加src文件夹,以便在运行测试时不需要重写路径?或者是什么发行和virtualenv做? – Karan

+0

我会更详细地更新答案。 – samplebias

1

有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可以是一个空文件。