我的Python单元测试代码如下所示
self.assertRaises(exc.UserError, module.function, args)
这基本上断言引发了UserError。但是我无法找到如何检查异常中的消息是否与我的正则表达式匹配。
我该怎么做? (我不想编写任何额外的代码,只是利用python unittest模块功能)
答案 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