在PyDev中使用nosetests进行交互式调试

时间:2010-11-03 13:38:45

标签: python debugging pylons pydev nose

我正在使用PyDev(和Aptana)编写和调试Python Pylons应用程序,我想在调试器中逐步完成测试。

是否可以通过PyDev启动测试并在断点处停止?

3 个答案:

答案 0 :(得分:2)

以下是我使用eclipse Pydev运行测试的方法(希望这会对你有所帮助)。

首先我创建一个python脚本,然后将它放在我的包目录的根目录中:

--Package
    |
    | -- runtest.py
    |
    | -- ... (others modules) 

并在runtest.py中输入:

import nose
nose.main()

现在我进入菜单运行 - >运行配置,我创建一个新的 Pydev Django 配置我选择我的包并将runtest.py放在主模块中,然后我转到参数选项卡相同的小部件和我输入程序参数我的项目的路径和不同的arg传递到脚本示例:

/home/me/projects/src --with-doctest  # Run doctests too

现在点击应用后,我可以运行此配置。

对于调试,您可以在调试模式下运行此配置并将断点放在代码中的任何位置,并且可以使用极好的调试小部件执行多个操作:单步执行,查看变量...

注意:对于doctests,我不认为你可以把断点放在doctest的行中,但你可以做的是把断点放在doctest调用的函数的def中,就像你可以使用的那样调试模式。

答案 1 :(得分:0)

尝试import pydevd; pydevd.settrace()想要断点。

答案 2 :(得分:0)

我有点工作 - 也就是说,我没有断点和步进工作,但我确实让PyDev运行测试并在PyUnit视图中显示结果。

当您运行单元测试时,您必须覆盖测试运行器以在运行配置的参数选项卡中使用“nose”和命令行参数“--with-pylons = path / to / test.ini” 。例如,我将其设置为“--with-pylons = .. / .. / test.ini”。不幸的是,我必须为我运行的每个测试单独设置它,我还没有找到一种方法将变量或项目路径放在那里。

另外,遗憾的是,我无法让断点工作。我按照http://pydev.blogspot.ca/2007/06/why-cant-pydev-debugger-work-with.html中的建议尝试修补,其评论无济于事。 YMMV。

在decorate_assignment()中的DecoratorTools-1.8-py2.7.egg / peak / util / decorators.py中,替换:

oldtrace = [frame.f_trace]

oldtrace = [sys.gettrace()]