为了确保来自我的模块的错误消息提供信息,我希望看到assertRaises()捕获的所有错误消息.今天我为每个assertRaises()执行此操作,但由于测试代码中有很多这样的内容,因此非常繁琐.
如何打印所有assertRaises()的错误消息?我已经研究了http://docs.python.org/library/unittest.html上的文档,但没有弄清楚如何解决它.我可以以某种方式monkeypatch assertRaises()方法?我不想更改测试代码中的所有assertRaises()行,因为我经常以标准方式使用测试代码.
我想这个问题与Python unittest有关:如何在Exceptions中测试参数?
这就是我今天的表现.例如:
#!/usr/bin/env python
def fail():
raise ValueError('Misspellled errrorr messageee')
Run Code Online (Sandbox Code Playgroud)
和测试代码:
#!/usr/bin/env python
import unittest
import failure
class TestFailureModule(unittest.TestCase):
def testFail(self):
self.assertRaises(ValueError, failure.fail)
if __name__ == '__main__':
unittest.main()
Run Code Online (Sandbox Code Playgroud)
要检查错误消息,我只需将assertRaises()中的错误类型更改为例如IOError.然后我可以看到错误消息:
E
======================================================================
ERROR: testFail (__main__.TestFailureModule)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test_failure.py", line 8, in testFail
self.assertRaises(IOError, failure.fail)
File "/usr/lib/python2.7/unittest/case.py", line 471, in assertRaises
callableObj(*args, **kwargs)
File "/home/jonas/Skrivbord/failure.py", line 4, in fail
raise ValueError('Misspellled errrorr messageee')
ValueError: Misspellled errrorr messageee
----------------------------------------------------------------------
Ran 1 …Run Code Online (Sandbox Code Playgroud)