簡単なテストケースを実行しました:
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 に付属している機能よりも多くの機能があるため、私も同じことをお勧めします。