1. ホーム
  2. python

[解決済み] ユニットテストのassertRaises()をNoneTypeオブジェクトで適切に使用するには?[重複]する

2022-02-02 17:11:03

質問

簡単なテストケースをやってみた。

def setUp(self):

  self.testListNone = None

def testListSlicing(self):

  self.assertRaises(TypeError, self.testListNone[:1])

で、テストに合格することを期待しているのですが、例外が発生しています。

Traceback (most recent call last):

    self.assertRaises(TypeError, self.testListNone[:1])

TypeError: 'NoneType' object is unsubscriptable

TypeErrorの例外が発生するので、assertRaisesはパスするのでは? が発生するのか?

どうすればいいですか?

Python2.7以上を使用している場合は、以下の機能を使用できます。 アサートレイズ をコンテキスト・マネージャーとして使用し、実行します。

with self.assertRaises(TypeError):
    self.testListNone[:1]

Python2.6を使用している場合、今までの方法とは別の方法として unittest2 これはunittestの新機能をpython2.6にバックポートしたもので、上のコードで動作させることができます。

注:私はunittestの新機能(SkipTest、test discovery ...)の大ファンなので、できる限りunittest2を使用するつもりです。Python2.6でunittestが備えているものよりも多くのものがあるので、私は同じことを行うことをお勧めします。