「変数」の機能を使うと、画面上の値などを一時的に保存しておき、後から参照することができます。たとえば、「あるUI要素のテキストを変数に保存し、別の画面の他のUI要素のテキストと一致するかチェックする」といった使い方が可能です。
目次
1. 変数に値を保存する
- 「値を保存」コマンドで、画面上の要素の値を変数に保存できます。(図1)
- 「現在時刻を元に生成したユニークな値を保存」コマンドで、毎回ユニークな値を変数に保存できます。毎回違うIDでユーザーを登録するテストなどに利用できます。
- 「固定値を保存」コマンドで、指定した値を変数に保存できます。
2. 変数の値を参照する
保存した変数は、その行以降のコマンドのテキスト中で${変数名}の形式で参照できます。
- 保存した変数は同一のテストケースからのみ参照することができます。
- 変数保存コマンドでは変数名は${...}無しで記述しますが、変数参照時は${...}で参照します。注意してください。
ロケータ内でも${変数名}の形式で変数を参照できます。詳しくはこちらをご確認ください。
3. 特別な変数を活用する
以下の変数はMagicPodで定義された特別な変数で、変数保存コマンドを使うことなく、${変数名}の形式で参照することができます。
| 名称 | 環境 | 説明 |
| ENVIRONMENT | モバイルアプリ/ブラウザ | テスト実行環境。「local_pc」「magic_pod」「browserstack」「remote_testkit」「saucelabs」のいずれか。「クラウド」を選択した場合は「magic_pod」 |
| OS | モバイルアプリ/ブラウザ | モバイルアプリの場合は「ios」「android」のいずれか、ブラウザの場合は「windows」「mac」「linux」「ios」「android」のいずれか |
| VERSION | モバイルアプリ | OSのバージョン。「13.3」「10」など |
| MODEL | モバイルアプリ | 機種。「iPhone 8」「Nexus 5X」など |
| DEVICE_TYPE | モバイルアプリ/ブラウザ | 端末の種類。モバイルアプリの場合は「simulator」「emulator」「arm64_v8a_emulator」「real_device」のいずれか、ブラウザの場合は「desktop」「mobile_emulation_by_chrome」のいずれか |
| DEVICE_REGION | モバイルアプリ | 端末の地域。「Default」「AU」「BR」「CA」「CN」「FR」「DE」「IN」「ID」「IT」「JP」「MX」「NL」「RU」「SA」「KR」「ES」「CH」「TW」「TR」「GB」「US」のいずれか |
| DEVICE_LANGUAGE | モバイルアプリ | 端末の言語。「default」「 en」「ja」「ko」「zh」「de」「it」「nl」「pt」「fr」「id」「th」「ar」「ru」「es」「bg」「cs」「hu」のいずれか |
| APP_PACKAGE | モバイルアプリ | Androidアプリのパッケージ名。Androidでのみ利用可能。「io.appium.android.apis」など |
| BROWSER | ブラウザ | ブラウザ名。「chrome」「firefox」「internet_explorer」「safari」「edge」のいずれか |
| BASE_URL | ブラウザ | テスト実行設定で指定した「ベースURL」 |
- VERSION、MODEL、DEVICE_TYPE、DEVICE_REGION、DEVICE_LANGUAGEなどの値は、テスト実行設定で指定した値で、実際に使用された端末の情報とは異なる場合があるので注意してください。例えば外部クラウドサービスなどで機種を単に「iPhone」と指定した場合、MODELの値も「iPhone」で、「iPhone 7」などの厳密な機種名ではありません。
- 上記の特別な値は、同じ名前の変数を変数保存コマンドや後述のシークレット変数で上書きしてしまうと参照できなくなるので注意してください。
4. 共有変数を活用する
テスト対象アプリのログイン情報など、同一プロジェクト内の複数のテストケース間で共通して使用する値は、共有変数として登録することができます。
共有変数はテスト実行設定ダイアログの詳細設定タブで登録します。左側の列に任意の変数名、右側に値を入力します。
なお、テスト一括実行時に共有変数を外側から渡す方法については、こちらをご参照ください。
5.変数をマスクする
Web APIのアクセストークンやパスワード入力の値など、テストケースの編集画面や結果画面、ログ等で表示したくない値は、共有変数に登録後、シークレット共有変数として登録することでマスクできます。共有変数をシークレット共有変数に変更する際は、赤枠の鍵マークを押下します。
設定した変数は、通常の変数と同じように${...}で参照できます。たとえばWeb APIコールで使う場合は以下のようになります。
シークレット共有変数の値は、テスト結果のログ上で「********」のようにマスクされます。
なお、この機能はマスクされた値が見えないことを100%保証するものではありません。例えば、マスクされた値をパスワード入力エリア以外の場所にテキスト入力すれば、アプリケーションの画面上でその値は簡単に表示されてしまいます。
6. テストケース間で変数を受け渡す
あらかじめ定義した変数を複数のテストケースで共通して使用したい場合は、共有変数をご利用いただけます。
一方、テストケースの実行中に定義(更新)された変数を、別のテストケースへ引き継いで利用するような場合は、共有変数では対応できません。
テストケースAで保存した変数をテストケースBへ受け渡して利用する方法については、こちらのページをご参照ください。
7. 「日時計算」コマンドの日付書式
「日時計算」のコマンドを利用する場合に、最初から用意されている「日付種別」だけではやりたいことが実現できない場合があります(例えば「05月」のような、ゼロ埋めされた月を取得したいなど)。このような場合には、「日付種別」を「日付書式指定」にすることで、様々な「日付書式」を指定できます。例えば、ゼロ埋めされた月の値を変数に保存したい場合は、「日付書式」に「MM月」を指定します。
他には、「yyyy/LL/dd(EEE) hh:mm:ss」と書くことで、「2020/05/01(金) 05:47:25」のような日時を変数保存することができます。「日付書式」の記法は、date-fnsというライブラリのものが利用できます。より細かい記述方法等に関してはこちらをご参照ください。
また、「日付書式」入力エリアには変数を使うこともできます。そのため、 例えば、「MM月」という文字列を変数「MONTH_FORMAT」に予め保存しておき、 日付書式に${MONTH_FORMAT}を指定することも可能です。
なお、「日時計算」コマンドは「システム」カテゴリの中にあります。ご注意ください。
図7 日時計算コマンド
8. 変数がセットされる順序
データパターンの値や変数が複数ある場合、以下の順序でセットされます。
- 共有変数
- 多言語データパターン
- データパターン
- テストスクリプト中の変数保存コマンド
- 既にセットされた変数は、${...}で参照することができます。
- 同じ名前の変数が既にセットされている場合、新しくセットした値で古い値は上書きされます。