【发布时间】:2012-12-14 10:00:57
【问题描述】:
python unittest 运行器处理所有异常。我想用我的调试器捕捉它们。
有没有办法让我的 unittest 运行器重新引发测试异常以终止进程? 我想自己处理。
编辑:找到解决方案。
您可以创建一个 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()
【问题讨论】:
-
根据他们的定义,这听起来不像单元测试应该如何运行。我想这是为了能够更好地弄清楚当它已经坏了时发生了什么?
-
这是为了避免出于调试目的重新运行测试。
-
那么你就在积极地违背单元测试的模式和目的。
-
那你就是在积极地违背便利性。单元测试的目的是: 1. 找出不起作用的东西。 2. 帮助你修复那些不起作用的东西。看看我的解决方案。
标签: python unit-testing debugging exception pycharm