python unittest 运行程序处理所有异常。我想用我的调试器捕获它们。
有没有办法让我的单元测试运行程序重新引发测试异常以终止进程?
我想亲自处理它们。
Edit: 找到解决办法了。
您可以创建一个unittest.TestSuite并调用debug() http://docs.python.org/2/library/unittest.html#unittest.TestSuite.debug运行您想要调试的测试 - 包括使用调试器捕获异常!
使用此模式可以轻松完成:
import unittest
class DebuggableTestCase(unittest.TestCase):
@classmethod
def debugTestCase(cls):
loader = unittest.defaultTestLoader
testSuite = loader.loadTestsFromTestCase(cls)
testSuite.debug()
class MyTestCase(DebuggableTestCase):
def test_function_that_fails(self):
raise Exception('test')
if __name__ == '__main__':
MyTestCase.debugTestCase()
我知道这是一个旧线程,也许在提出问题时其中一些内容并不存在。但只是为了后人...
你可以运行你的unittest使用 py.test 作为测试运行程序进行测试。 https://pytest.org/en/latest/unittest.html你会得到一些很棒的功能 http://pytest.org/en/latest/开箱即用。直接针对您的问题,有一些使用 py.test 进行调试的好方法,包括使用 PyCharm。
专门用来调试任何失败,事后分析,使用 PyCharm - 您所要求的 - 您可以安装pytest-pycharm
plugin.
pip install pytest-pycharm
(我正在每个项目的 virtualenv 中工作,所以这对我来说没有任何缺点。我建议您也这样做。否则,请注意您正在全局安装它,并且该插件将对使用此 Python 解释器的所有项目有效.)
也可以看看:
- JetBrains PyCharm 文档回复:测试框架 https://www.jetbrains.com/help/pycharm/2016.1/testing-frameworks.html,它将告诉您如何使用 py.test 作为 PyCharm 中的测试运行程序。
- 堆栈溢出线程:在 pycharm/pydev 中调试 pytest 事后异常 https://stackoverflow.com/questions/14086067/debugging-pytest-post-mortem-exceptions-in-pycharm-pydev
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)