繁体   English   中英

如何使用pudb调试器调试unittes?

[英]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.pypython -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.

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