【发布时间】:2010-11-03 13:38:44
【问题描述】:
我正在使用 PyDev(与 Aptana 一起)编写和调试 Python Pylons 应用程序,我想在调试器中逐步完成测试。
是否可以通过 PyDev 启动鼻子测试并在断点处停止?
【问题讨论】:
标签: python debugging pylons pydev nose
我正在使用 PyDev(与 Aptana 一起)编写和调试 Python Pylons 应用程序,我想在调试器中逐步完成测试。
是否可以通过 PyDev 启动鼻子测试并在断点处停止?
【问题讨论】:
标签: python debugging pylons pydev nose
这是我使用 eclipse Pydev 运行鼻子测试的方法(希望对您有所帮助)。
首先我创建了一个 python 脚本并将它放在我的包目录的根目录中:
--Package
|
| -- runtest.py
|
| -- ... (others modules)
在runtest.py中我放了:
import nose
nose.main()
现在我进入菜单 Run -> Run configurations 并创建 Pydev Django 的新配置,然后选择我的包并将 runtest.py 放入 main Module ,接下来我转到同一小部件中的 arguments 选项卡,然后将 Program arguments 放入我的项目的路径和不同的 arg 以传递给脚本示例:
/home/me/projects/src --with-doctest # Run doctests too
现在点击应用后我可以运行这个配置了。
对于调试,您可以在调试模式下运行此配置并将断点放在代码中的任何位置,您可以使用出色的调试小部件执行多项操作:步入,查看变量 ...
NB :对于 doctests 遗憾的是,我认为您不能将断点放在 doctest 的行中,但您可以做的是将断点放在 doctest 调用的函数的 def 中,这样您就可以使用调试模式。
【讨论】:
试试import pydevd; pydevd.settrace()哪里想断点。
【讨论】:
我得到了这个工作,有点 - 也就是说,我没有断点和单步工作,但我确实让 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 及其 cmets 中的建议进行修补,但无济于事。 YMMV。
在 decorate_assignment() 中的 DecoratorTools-1.8-py2.7.egg/peak/util/decorators.py 中,替换:
oldtrace = [frame.f_trace]
与
oldtrace = [sys.gettrace()]
【讨论】: