2013-02-19 94 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