2013-02-19 54 views
2

我有我的Python单元测试代码,看起来像下面Python的单元测试如何断言消息格式

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

这基本上断言,一个UserError长大。但是我找不到如何检查异常中的消息是否与我的正则表达式匹配。

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

+1

需要帮助吗? http://stackoverflow.com/questions/8215653/using-a-context-manager-with-python-assertraises应该有一个assertRaisesRegex? – User 2013-02-19 12:44:29

回答

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?

+0

“标准单元测试模块不提供此类方法。”假,看到平静风暴的答案。然而这个解决方案在python <2.7中工作。 – Bakuriu 2013-11-11 12:55:15

相关问题