23.3.3 既存テストコードの再利用

既存のテストコードが有るとき、このテストをunittestで実行しようと するために古いテスト関数をいちいちTestCaseクラスのサブクラスに 変換するのは大変です。

このような場合は、unittestではTestCaseのサブクラスである FunctionTestCaseクラスを使い、既存のテスト関数をラップします。初 期設定と終了処理も行なえます。

以下のテストコードがあった場合:

def testSomething():
    something = makeSomething()
    assert something.name is not None
    # ...

テストケースインスタンスは次のように作成します:

testcase = unittest.FunctionTestCase(testSomething)

初期設定、終了処理が必要な場合は、次のように指定します:

testcase = unittest.FunctionTestCase(testSomething,
                                     setUp=makeSomethingDB,
                                     tearDown=deleteSomethingDB)

既存のテストスイートからの移行を容易にするため、unittestAssertionErrorの送出でテストの失敗を示すような書き方もサポートしています。 しかしながら、TestCase.fail*()およびTestCase.assert*() メソッドを使って明確に書くことが推奨されています。unittestの 将来のバージョンでは、AssertionErrorは別の目的に使用される可能性が有ります。

注意: FunctionTestCaseを使って既存のテストをunittestベースの テスト体系に変換することができますが、この方法は推奨されません。時間を掛けて TestCaseのサブクラスに書き直した方が将来的なテストのリファクタリングが 限りなく易しくなります。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。