23.3.8 TestLoader オブジェクト

TestLoaderクラスは、クラスやモジュールからテストスイートを作成す るために使用します。通常はこのクラスのインスタンスを作成する必要はなく、 unittestモジュールのモジュール属性unittest.defaultTestLoaderを 共用インスタンスとして使用することができます。 ただ、サブクラスや別のインスタンスを活用すると設定可能なプロパティを カスタマイズすることもできます。

TestLoader オブジェクトには以下のメソッドがあります:

loadTestsFromTestCase( testCaseClass)
TestCaseの派生クラスtestCaseClassに含まれる全テスト ケースのスイートを返します。

loadTestsFromModule( module)
指定したモジュールに含まれる全テストケースのスイートを返します。このメ ソッドはmodule内のTestCase派生クラスを検索し、見つかった クラスのテストメソッドごとにクラスのインスタンスを作成します。

警告: TestCaseクラスを基底クラスとしてクラス階層を構築する とfixtureや補助的な関数をうまく共用することができますが、基底クラスに 直接インスタンス化できないテストメソッドがあると、この loadTestsFromModuleを使うことができません。この場合でも、 fixtureが全て別々で定義がサブクラスにある場合は使用することができま す。

loadTestsFromName( name[, module])
文字列で指定される全テストケースを含むスイートを返します。

nameには``ドット修飾名''でモジュールかテストケースクラス、テス トケースクラス内のメソッド、TestSuiteインスタンスまた はTestCaseTestSuiteのインスタンスを返す呼び出し可能 オブジェクトを指定します。このチェックはここで挙げた順番に行なわれます。 すなわち、候補テストケースクラス内のメソッドは「呼び出し可能オブジェクト」 としてではなく「テストケースクラス内のメソッド」として拾い出されます。

例えばSampleTestsモジュールに TestCaseから派生したSampleTestCaseクラスがあり、 SampleTestCaseにはテストメソッドtest_one()test_two()test_three()があるとします。この場合、 name'SampleTests.SampleTestCase'と指定すると、 SampleTestCaseの三つのテストメソッドを実行するテストスイートが 作成されます。'SampleTests.SampleTestCase.test_two'と指定すれ ば、test_two()だけを実行するテストスイートが作成されます。イ ンポートされていないモジュールやパッケージ名を含んだ名前を指定した場合 は自動的にインポートされます。

また、moduleを指定した場合、module内のnameを取得しま す。

loadTestsFromNames( names[, module])
loadTestsFromName()と同じですが、名前を一つだけ指定するのでは なく、複数の名前のシーケンスを指定する事ができます。戻り値は names中の名前で指定されるテスト全てを含むテストスイートです。

getTestCaseNames( testCaseClass)
testCaseClass中の全てのメソッド名を含むソート済みシーケンスを返 します。testCaseClassTestCaseのサブクラスでなければな りません。

以下の属性は、サブクラス化またはインスタンスの属性値を変更し てTestLoaderをカスタマイズする場合に使用します。

testMethodPrefix
テストメソッドの名前と判断されるメソッド名の接頭語を示す文字列。デフォ ルト値は'test'です。

この値はgetTestCaseNames()と全て のloadTestsFrom*()メソッドに影響を与えます。

sortTestMethodsUsing
getTestCaseNames()および全て のloadTestsFrom*()メソッドでメソッド名をソートする際に使用する比較関 数。デフォルト値は組み込み関数cmp()です。ソートを行なわないように この属性にNoneを指定することもできます。

suiteClass
テストのリストからテストスイートを構築する呼び出し可能オブジェクト。メ ソッドを持つ必要はありません。デフォルト値はTestSuiteです。

この値は全てのloadTestsFrom*()メソッドに影響を与えます。

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