Python 单元测试如何断言消息格式
我有一段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