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

2 投票
2 回答
3007 浏览
提问于 2025-04-17 16:21

我有一段Python单元测试代码,内容如下:

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

这段代码主要是用来检查是否抛出了一个UserError错误。不过,我找不到办法来检查这个错误信息是否符合我的正则表达式。

我该怎么做呢?(我希望不写额外的代码,只想利用Python的unittest模块的功能)

2 个回答

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继承。

附注:这段内容是从 如何在Python2.7的unittest中显示assertRaises()捕获的错误信息? 偷来的 :)

2

在Python 2.7.3版本中,似乎有一个相同的方法,叫做“assertRaisesRegexp”,所以我们不需要(也不应该)自己写包装函数 :)

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

撰写回答