前回の記事では、 【自動化テスト入門⑥】KatalonStudio | Excelを利用したデータバインディングでログインテストを10件実行する方法を実行しました。よく使うコードを紹介する前に最も重要な機能を紹介しようと思います。
Data Bindingを利用すると、Excelのデータを使ってさまざまなユーザーでテストできるため、とても便利です。
しかし、テストケースが増えてくると、別の問題が見えてきます。例えば、Menu1・Menu2・Menu3のテストケースを作成するとします。
すると、それぞれのテストケースで
- ログイン
- メニュークリック
- ログアウト
という同じ処理を毎回書くことになります。テストケースが20個、30個と増えていくと、同じコードを何度も修正しなければならず、保守が大変になります。
今回はそんな時に便利な
- Call Test Case
- Test Listener
この2つを使って共通処理を管理する方法を紹介します。
Call Test Caseとは?
Call Test Caseは、作成済みのテストケースを別のテストケースから呼び出す機能です。
例えばログイン処理を一つだけ作成し、それを他のテストケースから再利用できます。
まずは共通のLoginテストケースを作成します。

Loginテストケースを作成
今回は前回作成したログイン処理を利用します。
まずVariablesを作成します。

その後、Scriptモードでログイン処理を作成します。
例:

今回は詳細なログイン処理については前回の記事で紹介していますので、省略します。
Call Test Caseで呼び出す
では、Menu1のテストケースを生成します。

ログイン処理を書く代わりに、Call Test Caseを書きます。

結果:

テストも無事にパスしました。
Variablesへ値を渡せる
Call Test Caseの便利なところは、呼び出すたびにVariablesへ違う値を渡せることです。
例えば
[
('email') : 'admin@test.com',
('password') : 'Test1234!'
]
を
[
('email') : 'user@test.com',
('password') : 'User1234!'
]
に変更するだけで、同じLoginテストケースを使いながら別ユーザーでログインできます。
つまり、
- 管理者
- 一般ユーザー
- 日本語ユーザー
- 英語ユーザー
など、テストケースごとに自由に切り替えられます。

Variablesは変数を使って渡せることも、こうやって直接渡せることもできます。
Loginと同じようにLogoutテストケースも作成し、Call Test Caseで呼び出します。今回は処理が単純なので省略します。
しかし…
ここで一つ気になることがあります。
Menu2でもMenu3でも、
その他のケースも毎回WebUI.callTestCase(…)を書く必要があります。
もちろんCall Test Caseだけでも十分便利ですが、「すべてのテストケースで必ず実行する処理」であれば、もっと簡単にできます。そこで登場するのがTest Listenerです。
Test Listenerとは?
Test Listenerは、テスト開始前や終了後など、決まったタイミングで自動的に処理を実行できる機能です。
例えば
- ログイン
- ログアウト
- ブラウザ起動
- ブラウザ終了
- Screenshot取得
などを自動化できます。
Test Listenerを作成
ファイルを生成します。
- Test Listener右クリック
- New→NewTest Listenerクリック
今回はCommonという名前で作成しました。

BeforeTestCase
今回は例として、管理者アカウントで自動ログインするようにします。
これで各テストケース開始前に、自動でLoginが実行されます。


全てのテストに同じ処理が実行されます。
AfterTestCase
同じように終了後は

を追加します。
今回はClose Browserにしていますが、Logoutのロジックを書いても構いません。
結果:

ログを見るとしっかりbefor/after TestCaseが実行されています。
テストケースはシンプルになる
今までLogin→Menu1処理→Logoutで書いたテストケースがMenu1処理だけで済むことになります。
Before:
WebUI.openBrowser('http://localhost:3000/login')
WebUI.setText(findTestObject('common/input_Email'), email)
WebUI.setText(findTestObject('common/input_Password'), password)
WebUI.click(findTestObject('common/button_login-btn'))
WebUI.click(findTestObject('Object Repository/menu/menu2'))
WebUI.closeBrowser()After:
WebUI.click(findTestObject('Object Repository/menu/menu2'))
ログイン・ログアウトはTest Listenerが自動で実行してくれるため、テストケースは本来テストしたい内容だけを書くことができます。
Call Test CaseとTest Listenerの違い
最後に、この2つの違いをまとめます。
| Call Test Case | Test Listener |
|---|---|
| 必要な時だけ呼び出す | 自動で実行される |
| Variablesへ自由に値を渡せる | 共通処理向け |
| ユーザーごとのテストに向いている | 全テスト共通のログインなどに向いている |
例えば、
- ユーザーごとにログイン情報を変更したい場合は Call Test Case
- 全テストを管理者アカウントで実行したい場合は Test Listener
というように使い分けることができます。
まとめ
今回は
- Call Test Case
- Test Listener
を利用して共通処理を管理する方法を紹介しました。
どちらも重複コードを減らすための便利な機能ですが、用途は少し異なります。状況に応じて使い分けることで、保守しやすい自動テストを作成できます。
次回は、Katalon Studioで特によく利用するWebUIキーワードを紹介します。クリックや入力、待機処理など、実際のテストケースで頻繁に使用するコードをまとめて解説したいと思います。

