![](/img/trans.png)
[英]How to repeat the last command on the command-line in the python debugger, PuDB
[英]How to debug unittests with pudb debugger?
我试图通过pudb调试器调试一些单元测试时遇到一些麻烦。
测试运行良好的python,但我没有运气与pudb
。
我解决了这个问题,得到以下示例代码:
class Math:
def pow(self, x, y):
return x ** y
import unittest
class MathTest(unittest.TestCase):
def testPow23(self):
self.assertEquals(8, Math().pow(2, 3))
def testPow24(self):
self.assertEquals(16, Math().pow(2, 4))
if __name__ == '__main__':
unittest.main()
测试运行良好:
$ python amodule.py
.
----------------------------------------------------------------------
Ran 2 tests in 0.001s
OK
但如果通过pudb运行,它会给我输出:
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
我已经尝试使用pudb amodule.py
和python -m pudb.run amodule.py
,但它没有任何区别 - 没有测试以一种或另一种方式运行。
我应该做一些与使用pudb调试单元测试不同的东西吗?
尝试在代码中的有用行上放置断点:
from pudb import set_trace; set_trace()
您尝试启动它的方式可能会干扰测试发现和/或不使用__name__
'__main__'
运行脚本。
由于这是一个很受欢迎的问题,我觉得我还应该提一下,大多数测试运行工具都需要你传入一个开关,以防止它捕获标准输出和输入(通常是-s
)。
所以,记得在使用Pytest时运行pytest -s
,或者为Nose使用nosetests -s
,为Django测试运行python manage.py test -s
,或者检查测试运行工具的文档。
您可以通过以下方式更轻松地设置断点:
import pudb; pu.db
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.