如何运行python测试文件

时间:2011-03-10 20:49:16

标签: python unit-testing

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

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

干杯

编辑:如果我跑

python test/myTestFile.py

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

2 个答案:

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

更新以回复评论中的问题:

这显示了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可以是空文件。