我有我的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