如何在运行pytesttesting时随意执行ipdb.set_trace()
我正在使用pytest作为我的testing套件。 在捕获复杂的组件间testing中的错误时,我想放置import ipdb; ipdb.set_trace()
import ipdb; ipdb.set_trace()
在我的代码中,让我debugging它。
但是,由于pytest陷阱sys.stdin / sys.stdout ipdb失败。 如何在使用pytest进行testing时使用ipdb。
我没有兴趣在故障发生后跳转到pdb或ipdb,而是在代码的任何地方放置中断,并且能够在发生故障之前在那里debugging它。
由于py.test捕获输出而引发错误。
你应该使用-s
选项运行py.test(closures捕获输出)。 例如:
py.test -s my_test.py
安装pytest-ipdb插件,然后使用
pytest.set_trace()
pytest-ipdb不幸的是不再支持。
解决办法是运行pytest my_test.py --pdb --pdbcls=IPython.terminal.debugger:Pdb
从帮助命令:
pytest -h --pdb start the interactive Python debugger on errors. --pdbcls=modulename:classname start a custom interactive Python debugger on errors. For example: --pdbcls=IPython.terminal.debugger:TerminalPdb
不同的是,TerminalPdb似乎抛出了错误,但是Pdb没有( Ipython文档 )。