NoneType オブジェクトでユニットテストの assertRaises() を適切に使用する方法 [重複] 質問する

NoneType オブジェクトでユニットテストの assertRaises() を適切に使用する方法 [重複] 質問する

簡単なテストケースを実行しました:

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 は成功すると思いました。説明は何でしょうか?

ベストアンサー1

Python 2.7以上を使用している場合は、アサートレイズコンテキストマネージャーとして使用し、次の操作を実行します。

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

Python 2.6を使用している場合、これまでに示した方法の他に、ユニットテスト2これは単体テストの新機能は Python 2.6 に導入されており、上記のコードを使用して動作させることができます。

注意: 私は unittest の新機能 (SkipTest、テスト検出など) の大ファンなので、できる限り unittest2 を使用するつもりです。Python 2.6 以前の unittest に付属している機能よりも多くの機能があるため、私も同じことをお勧めします。

おすすめ記事