繁体   English   中英

使用nosetests设置断点--pdb选项

[英]setting breakpoints with nosetests --pdb option

nosetests --pdb让我停止错误或失败,但这对我的需求来说太迟了。 在执行期间单步执行代码可帮助我调试问题所在。

但是,nosetests是有用的,因为它们允许依赖于相对导入的测试(即在包中进行测试)。

如何在执行测试之前设置断点? 目前我正在使用:

python -m pdb /path/to/my/nosetests testfile.py

这种解决方案是不够的。 Nosetests干扰pdb输出,我的键盘控制(例如箭头键)被破坏。

使用import pdb; pdb.set_trace()似乎是一个好主意,但是nosetests阻止了我对pdb控制台的访问。

甚至比记住使用-s更好的是使用Nose附带的set_trace变体。

from nose.tools import set_trace; set_trace()

无论你想进入调试器的哪个地方。 stdin / out重定向将为您处理。 我遇到的唯一奇怪的副作用是在鼻子运行期间调试时无法从pdb(使用run )重启代码。

你可以加

import pdb; pdb.set_trace() 

源中要在调试器中停止的任何位置。

确保将-s传递给nose,以便它不会捕获stdout

如果你有ipython ,无限的使用:

import ipdb; ipdb.set_trace() 

*无限可怕:就像ipython一样 - 自动完成,着色等。

如果你使用pytest ,你可以使用

import pytest; pytest.set_trace()

文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM