LoginSignup
1
2

More than 5 years have passed since last update.

【Python】例外を拾ったりassertRaises等で拾うときのTips

Posted at

pythonのunittestを書いていてとても初歩的なところでつまづいてて情けなかったのでメモ。

ある条件下でちゃんと期待した例外をあげるかを確認するテストケースを書いてて、
はじめこう書いていたのです。

def test_raise_error_method(self):
    with self.assertRaises(Exception):
        raise FileNotFoundError('file not found')  ## 例外を上げる処理(メソッド)をここに書く

assertRaisesExceptionと書いてて、
raise で、FileNotFoundErrorと書いているのでこのテストケースは失敗するものと思ってた。

なのですが成功(OK)と出る・・・。

悩んだ挙句に人に聞いたところ、
「FileNotFoundErrorはExceptionのサブクラスだから、Exceptionで拾うと全部それにひっかかる」

あ、そうなんだ。と。

調べているときに確かにFileNotFoundErrorがサブクラスというのはドキュメントを見て理解はしていたけど、
まさかそれだったとは。

とはいえ確かに言われてみれば何が返ってくるかわからないときはとりあえずExceptionで拾うときあるし、それと同じかー。
と思うことで納得。

IT業界はまだまだ知らないことだらけです。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2