変数

Magic Podの使い方 > 変数

「変数」の機能を使うと、画面上の値などを一時的に保存しておき、後から参照することができます。たとえば、「あるUI要素のテキストを変数に保存し、別の画面の他のUI要素のテキストと一致するかチェックする」といった使い方が可能です。

変数に値を保存する

  • 「値を保存」コマンドで、画面上の要素の値を変数に保存できます。(図1)
  • 「現在時刻を元に生成したユニークな値を保存」コマンドで、毎回ユニークな値を変数に保存できます。毎回違うIDでユーザーを登録するテストなどに利用できます。
  • 「固定値を保存」コマンドで、指定した値を変数に保存できます。
「値を保存」コマンド
図1「値を保存」コマンド

変数の値を参照する

保存した変数は、その行以降のコマンドのテキスト中で${変数名}の形式で参照できます。(図2)

変数の参照
図2 変数の参照
  • 保存した変数は同一のテストケースからのみ参照することができます。
  • 変数保存コマンドでは変数名は${...}無しで記述しますが、変数参照時は${...}で参照します。注意してください。

特別な変数

以下の変数はMagic-Podで定義された特別な変数で、変数保存コマンドを使うことなく、${変数名}の形式で参照することができます。

変数名説明
OSテスト実行時に選択したOS「ios」「android」のいずれか
VERSIONテスト実行時に選択したバージョン「13.3」「10」など
MODELテスト実行時に選択した機種名「iPhone 8」「Nexus 5X」など
DEVICE_TYPEテスト実行時に選択した端末の種類「simulator」「emulator」「real_device」のいずれか
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」のいずれか
APP_PACKAGEAndroidアプリのパッケージ名。Androidテストのみ利用可能「io.appium.android.apis」など
BROWSERテスト実行時に選択したブラウザ名。デスクトップブラウザのテストのみ利用可能「chrome」「firefox」「internet explorer」のいずれか
  • 上記の特別な値は、同じ名前の変数を変数保存コマンドや後述のシークレット変数で上書きしてしまうと参照できなくなるので注意してください。

マスクしたい値を変数として扱う

Web APIのアクセストークンやパスワード入力の値など、テストケースの編集画面や結果画面、ログ等で表示したくない値はシークレット変数として登録することでマスクできます。シークレット変数はテスト実行時の設定を行うポップアップの詳細タブで登録します。左側の列に好きな変数名、右側に値を入力します。(図3)

図3 シークレット変数の設定

設定した変数は、通常の変数と同じように${...}で参照できます。たとえばWeb APIコールで使う場合は以下のようになります。

図4 Web APIコールで認証トークンをシークレット変数で定義する

シークレット変数の値は、テスト結果のログ上で「********」のようにマスクされます。

コマンドラインからシークレット変数を使う

シークレット変数を使ったテストケースをコマンドラインから実行する方法は2つあります。

magic_pod_config.jsonファイルに変数の値を直接記述する

たとえば元々このようなJSONファイルでテストを実行していたとします。

少し複雑になりますが、以下のように設定を追記するとシークレット変数を渡して実行することができます。この例では、TOKEN1とTOKEN2という2つの変数を設定しています。

テストを実行するときのコマンドは通常のコマンドライン実行と同じです。

環境変数を使って設定する

もう少し厳密に、変数の値をファイルに残さずに管理したいという場合には環境変数を使って設定することもできます。その場合のmagic_pod_config.jsonの記述は以下のようになります。

この場合は実行時に実際の値を与える必要がありますので、実行のコマンドは以下のようになります。