Python单元测试如何断言消息格式

时间:2013-02-19 12:01:34

标签: python unit-testing python-2.7

我的Python单元测试代码如下所示

self.assertRaises(exc.UserError, module.function, args)

这基本上断言引发了UserError。但是我无法找到如何检查异常中的消息是否与我的正则表达式匹配。

我该怎么做? (我不想编写任何额外的代码,只是利用python unittest模块功能)

2 个答案:

答案 0 :(得分:3)

class ExtendedTestCase(unittest.TestCase):

    def assertRaisesWithMessage(self, msg, func, *args, **kwargs):
        try:
            func(*args, **kwargs)
            self.assertFail()
        except Exception as inst:
            self.assertEqual(inst.message, msg)

标准unittest模块不提供此类方法。如果您经常使用此代码,则可以使用上面的代码并从ExtendedTestCase继承。

PS:从How to show the error messages caught by assertRaises() in unittest in Python2.7?被盗:)

答案 1 :(得分:2)

Python似乎在2.7.3中使用相同的方法,该方法名为“assertRaisesRegexp”,因此我们不会(也不应该)编写自己的包装器:)

http://docs.python.org/2/library/unittest.html#unittest.TestCase.assertRaisesRegexp