Unittest-framework-api
UnitTest Framework-API
この章では、unittestモジュールで定義されているクラスとメソッドについて説明します。 このモジュールには5つの主要なクラスがあります。
TestCaseクラス
このクラスのオブジェクトは、テスト可能な最小単位を表します。 テストルーチンを保持し、各ルーチンの準備とその後のクリーンアップのためのフックを提供します。
次のメソッドはTestCaseクラスで定義されています-
Sr.No. | Method & Description |
---|---|
1 |
setUp() テストフィクスチャを準備するために呼び出されるメソッド。 これは、テストメソッドを呼び出す直前に呼び出されます |
2 |
tearDown() テストメソッドが呼び出され、結果が記録された直後に呼び出されるメソッド。 これは、テストメソッドが例外を発生させた場合でも呼び出されます。 |
3 |
setUpClass() 個々のクラスのテストの前に呼び出されるクラスメソッド。 |
4 |
tearDownClass() 個々のクラスのテストが実行された後に呼び出されるクラスメソッド。 |
5 |
run(result = None) テストを実行し、_result_として渡されたテスト結果オブジェクトに結果を収集します。 |
6 |
skipTest(reason) テストメソッドまたはsetUp()中にこれを呼び出すと、現在のテストがスキップされます。 |
7 |
debug() 結果を収集せずにテストを実行します。 |
8 |
shortDescription() テストの1行の説明を返します。 |
備品
TestCaseクラス内には多数のテストが記述できます。 これらのテストメソッドでは、データベース接続、一時ファイル、またはその他のリソースを初期化する必要があります。 これらはフィクスチャと呼ばれます。 TestCaseには、テストに必要なフィクスチャを構成およびクリーンアップするための特別なフックが含まれています。 フィクスチャを設定するには、setUp()をオーバーライドします。 クリーンアップするには、tearDown()をオーバーライドします。
次の例では、2つのテストがTestCaseクラス内に記述されています。 2つの値の加算と減算の結果をテストします。 setup()メソッドは、各テストのshortDescription()に基づいて引数を初期化します。 teardown()メソッドは、各テストの終わりに実行されます。
コマンドラインから上記のコードを実行します。 それは次の出力を与えます-
クラスフィクスチャ
TestCaseクラスにはsetUpClass()メソッドがあり、TestCaseクラス内の個々のテストを実行する前にオーバーライドできます。 同様に、クラス内のすべてのテストの後にtearDownClass()メソッドが実行されます。 どちらのメソッドもクラスメソッドです。 したがって、@ classmethodディレクティブで装飾する必要があります。
次の例は、これらのクラスメソッドの使用を示しています-
TestSuiteクラス
Pythonのテストフレームワークは、テストケースインスタンスを、テストする機能に従ってグループ化できる便利なメカニズムを提供します。 このメカニズムは、unittestモジュールのTestSuiteクラスによって使用可能になります。
次の手順は、テストスイートの作成と実行に関係しています。
- ステップ1 *-TestSuiteクラスのインスタンスを作成します。
- ステップ2 *-スイートのTestCaseクラス内にテストを追加します。
- ステップ3 *-makeSuite()メソッドを使用してクラスからテストを追加することもできます
- ステップ4 *-個々のテストをスイートに追加することもできます。
- ステップ5 *-TestTestRunnerクラスのオブジェクトを作成します。
- ステップ6 *-run()メソッドを呼び出して、スイート内のすべてのテストを実行します
次のメソッドはTestSuiteクラスで定義されています-
Sr.No. | Method & Description |
---|---|
1 |
addTest() テストスイートにテストメソッドを追加します。 |
2 |
addTests() 複数のTestCaseクラスからテストを追加します。 |
3 |
run() このスイートに関連付けられたテストを実行し、テスト結果オブジェクトに結果を収集します |
4 |
debug() 結果を収集せずに、このスイートに関連付けられているテストを実行します。 |
5 |
countTestCases() このテストオブジェクトによって表されるテストの数を返します |
次の例は、TestSuiteクラスの使用方法を示しています-
makeSuite()メソッドを持つ行とコメント文のコメントを外すことにより、addTest()メソッドを試すことができます。
TestLoaderクラス
unittestパッケージには、クラスとモジュールからテストスイートを作成するために使用されるTestLoaderクラスがあります。 デフォルトでは、unittest.main(0メソッドが呼び出されると、unittest.defaultTestLoaderインスタンスが自動的に作成されます。 ただし、明示的なインスタンスにより、特定のプロパティのカスタマイズが可能になります。
次のコードでは、TestLoaderオブジェクトを使用して、2つのクラスのテストがリストに収集されます。
次の表は、TestLoaderクラスのメソッドのリストを示しています-
Sr.No | Method & Description |
---|---|
1 |
loadTestsFromTestCase() TestCaseクラスに含まれるすべてのテストケースのスイートを返します |
2 |
loadTestsFromModule() 指定されたモジュールに含まれるすべてのテストケースのスイートを返します。 |
3 |
loadTestsFromName() 文字列指定子を指定して、すべてのテストケースのスイートを返します。 |
4 |
discover() 指定された開始ディレクトリからサブディレクトリに再帰してすべてのテストモジュールを検索し、TestSuiteオブジェクトを返します。 |
TestResultクラス
このクラスは、成功したテストと失敗したテストに関する情報をコンパイルするために使用されます。 TestResultオブジェクトには、一連のテストの結果が格納されます。 TestRunnerインスタンスはTestRunner.run()メソッドによって返されます。
TestResultインスタンスには次の属性があります-
Sr.No. | Attribute & Description |
---|---|
1 |
Errors 2組のTestCaseインスタンスとフォーマットされたトレースバックを保持する文字列を含むリスト。 各タプルは、予期しない例外を発生させたテストを表します。 |
2 |
Failures 2組のTestCaseインスタンスとフォーマットされたトレースバックを保持する文字列を含むリスト。 各タプルは、TestCase.assert *()メソッドを使用して障害が明示的に通知されたテストを表します。 |
3 |
Skipped 2組のTestCaseインスタンスと、テストをスキップする理由を保持する文字列を含むリスト。 |
4 |
wasSuccessful() これまでに実行されたすべてのテストに合格した場合はTrueを返し、そうでない場合はFalseを返します。 |
5 |
stop() このメソッドを呼び出して、実行中のテストセットを中止する必要があることを通知できます。 |
6 |
startTestRun() テストが実行される前に1回呼び出されます。 |
7 |
stopTestRun() すべてのテストが実行された後に1回呼び出されます。 |
8 |
testsRun これまでに実行されたテストの総数。 |
9 |
Buffer trueに設定すると、 sys.stdout と sys.stderr は、https://docs.python.org/2/library/unittestl#unittest.TestResult.startTest [startTest()]とhttpsの間にバッファリングされます。//docs.python.org/2/library/unittestl#unittest.TestResult.stopTest [stopTest()]が呼び出されています。 |
次のコードはテストスイートを実行します-
コードを実行すると、次の出力が表示されます-