python unittest运行器处理所有异常。我想用调试器捕捉它们。在
有没有办法让我的UnitTestRunner重新引发测试异常来终止进程? 我想自己处理。在
编辑:找到解决方案。在
您可以创建单元测试套件并调用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失败的原因,那么实际上不需要引发异常。在
只需在发生异常的行设置一个断点,并在调试模式下运行。PyCharm将转到调试屏幕,让您检查变量和调用堆栈。在
这个问题本身的解决方案在我看来并不好:
我的解决方案更“老套”,但没有提到缺点。此外,只有在调试器下运行测试时,测试行为才会更改。在
在unittest.TestResult.addError如果测试不需要异常,则在异常处理程序中调用。我重新定义此方法以重新引发正在处理的异常。在
我将这个类用作测试用例的父类:
这个解决方案用python3.4和PyCharm 3.4进行了测试
我知道这是一个老问题,也许当有人问这个问题时,其中一些东西并不在身边。只是为了子孙后代。。。
You can run your ^{} tests with py.test as a test runner. 你会从盒子里取出一些great features。直接针对您的问题,有一些好的方法可以用来调试py.测试包括PyCharm。在
特别是在任何失败时调试,事后检查,使用PyCharm(您所要求的)可以安装
pytest-pycharm
插件。在(我在每个项目中都在虚拟环境中工作,所以这对我来说没有坏处。我建议你也这样做。否则,请注意,您是在全局范围内安装它,并且此插件对于使用此Python interpeter的所有项目都是活动的。)
另请参见:
相关问题 更多 >
编程相关推荐