我有我的Python单元测试代码,看起来像下面Python的单元测试如何断言消息格式
self.assertRaises(exc.UserError, module.function, args)
这基本上断言,一个UserError长大。但是我找不到如何检查异常中的消息是否与我的正则表达式匹配。
我该怎么做? (我宁愿不写任何额外的代码,只是利用Python的unittest模块功能)
我有我的Python单元测试代码,看起来像下面Python的单元测试如何断言消息格式
self.assertRaises(exc.UserError, module.function, args)
这基本上断言,一个UserError长大。但是我找不到如何检查异常中的消息是否与我的正则表达式匹配。
我该怎么做? (我宁愿不写任何额外的代码,只是利用Python的unittest模块功能)
的Python似乎有同样的方法在2.7.3,该方法被命名为“assertRaisesRegexp”所以我们不会(也不应该)我们自己写的包装:)
http://docs.python.org/2/library/unittest.html#unittest.TestCase.assertRaisesRegexp
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?
“标准单元测试模块不提供此类方法。”假,看到平静风暴的答案。然而这个解决方案在python <2.7中工作。 – Bakuriu 2013-11-11 12:55:15
需要帮助吗? http://stackoverflow.com/questions/8215653/using-a-context-manager-with-python-assertraises应该有一个assertRaisesRegex? – User 2013-02-19 12:44:29