次のようなPython単体テストコードがあります
self.assertRaises(exc.UserError, module.function, args)
これは基本的に UserError が発生したことを表明します。ただし、例外のメッセージが正規表現と一致するかどうかを確認する方法が見つかりません。
これどうやってするの?(余分なコードを書かずに、python unittest モジュールの機能を利用したいだけです)
次のようなPython単体テストコードがあります
self.assertRaises(exc.UserError, module.function, args)
これは基本的に UserError が発生したことを表明します。ただし、例外のメッセージが正規表現と一致するかどうかを確認する方法が見つかりません。
これどうやってするの?(余分なコードを書かずに、python unittest モジュールの機能を利用したいだけです)
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: Python2.7 の unittest で assertRaises() によってキャッチされたエラー メッセージを表示する方法から盗まれましたか? :)
Python は 2.7.3 で同じメソッドを持っているようです。このメソッドは「assertRaisesRegexp」と名付けられているため、独自のラッパーを作成しません (また、作成すべきではありません):)
http://docs.python.org/2/library/unittest.html#unittest.TestCase.assertRaisesRegexp