使用Python pudb调试器和pytest

时间:2014-08-07 12:39:58

标签: python pytest pudb

在我选择的测试库之前 unittest 。它正在使用我最喜欢的调试器 - Pudb 。不是Pdb !!!

要将 Pudb unittest 一起使用,我会在代码行之间粘贴import pudb;pudb.set_trace()。 然后我执行python -m unittest my_file_test,其中 my_file_test my_file_test.py 文件的模块表示。

简单地使用nosetests my_file_test.py赢得了工作 - AttributeError: StringIO instance has no attribute 'fileno'将被抛出。

py.test 不起作用:
py.test my_file_test.py
也不
python -m pytest my_file_test.py

抛出ValueError: redirected Stdin is pseudofile, has no fileno()

有关如何将 Pudb py.test

一起使用的任何想法

2 个答案:

答案 0 :(得分:15)

只需添加 -s 标志就不会替换stdin和stdout,并且可以访问调试,即py.test -s my_file_test.py可以解决问题。

在ambi提供的文档中,也有人说,以前使用显式的 -s 也需要常规 pdb ,现在 -s 标志隐含地与 - pdb 标志一起使用。

py.test 并不隐式支持 pUdb ,因此需要设置-s。

答案 1 :(得分:9)

更新的答案是,现在an adapter library available公开--pudb跟踪选项,类似于--pdb跟踪选项。当然,更通用的-s选项仍然是来自任何调试器的手动放置断点的有效解决方案。

要使用,pip install pytest-pudb然后通过py.test --pudb执行Pytest。此外,如果安装了此适配器,则无需import pudb; pudb.set_trace()-s即可支持--capture=no功能。