テストは、実行中にデータを作成することがよくあります。たとえば、新しいアカウント、レコード、商品アイテムなどです。こうしたデータを確実に削除する方法がないと、テストが終了した後も長期間にわたって環境内に蓄積されてしまう可能性があります。テストを自己完結型に保つには、テストの最後にあるステップグループまたはフローを ティアダウン(teardown) としてマークできます。ティアダウンは、テストが失敗した場合も含め、テストを実行するたびに毎回実行されます。そのため、テストが作成したデータはいずれの場合もクリーンアップされます。
この記事では、ティアダウンを使ってテストデータをクリーンアップする方法を、次の内容を含めて説明します。
ステップグループまたはフローをティアダウンとしてマークする
ステップグループやフローは、テストの最後のステップである限り、どれでもティアダウンとして機能させることができます。ティアダウンとしてマークするには、次の手順を実行します。
- 最新バージョンのmablデスクトップアプリで、mablトレーナーでテストを開きます。
- クリーンアップに使用したいステップグループまたはフローを、テストの最後のステップとして追加します。
- ステップグループまたはフローにカーソルを合わせ、…(その他の操作) をクリックします。
- ティアダウングループとして実行 または ティアダウンフローとして実行 を選択します。
ティアダウンのオプションは、ステップグループまたはフローがテストの最後のステップである場合にのみ表示されます。表示されない場合は、その後ろに他のステップがないことを確認してください。
ティアダウンとしてマークされたステップグループ
常に実行されるクリーンアップステップを作成する
優れたティアダウンは、テストが作成したデータだけを正確に削除し、それ以外は削除しません。これを確実に行う方法の1つは、テストがデータを作成する際にそのデータの識別子を取得して変数に格納し、ティアダウンでその変数を使って、削除対象として同じレコードを指定することです。
たとえば、顧客アカウントを作成するテストでは、新しいアカウントIDをページのURLから抽出して変数に格納することが考えられます。その後、ティアダウンがその変数を読み取り、一致するアカウントを削除します。これにより、どのアカウントを作成した場合でも、各実行が自身の作成したデータをクリーンアップします。
ティアダウンはテストが失敗した場合でも実行されるため、このパターンによって、テストの途中で失敗してもデータが取り残されることを防げます。アカウントを作成した後、完了する前にテストが失敗した場合でも、ティアダウンは実行され、アカウントを削除します。
アサーションではなく、クリーンアップステップを作成する
ティアダウンは最後まで実行されることを前提としているため、その中で失敗が発生するとテストが失敗します。これはPlaywrightやJestのようなフレームワークと同じ動作です。失敗する可能性のあるアサーションではなく、確実にクリーンアップを行うティアダウンステップを作成してください。作成したデータについて検証が必要な場合は、ティアダウンの前に、テストの本体で行ってください。
ティアダウンとクリーンアッププランステージを使い分ける
ティアダウンのステップグループやフローは、データを作成したテストの内部に存在します。そのため、1つのテストが自身の作成したデータをクリーンアップする必要がある場合に適した選択肢です。クリーンアップはテストと一緒に移動するため、別途構築して維持するティアダウン用のテストやプランステージは必要ありません。
複数のテストにまたがるクリーンアップや、どのテストがデータを作成したかにかかわらず実行する必要があるクリーンアップには、プラン内の専用のクリーンアップステージのほうが適しています。クリーンアップテストのステージを構築し、常にステージを実行の設定を有効にすると、前のステージが失敗した場合でもそのステージが実行されます。このようなプランの構成方法について詳しくは、テストをプランにまとめるを参照してください。