小编jon*_*erg的帖子

如何在Python2.7中的unittest中显示assertRaises()捕获的错误消息?

为了确保来自我的模块的错误消息提供信息,我希望看到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)

python unit-testing

69
推荐指数
5
解决办法
5万
查看次数

标签 统计

python ×1

unit-testing ×1