変数

Magic Podの使い方 > 変数

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

目次

  1. 変数に値を保存する
  2. 変数の値を参照する
  3. 特別な変数
  4. テストケース間で共有の変数、マスクしたい変数を扱う
  5. 「日時を保存」コマンドの日付書式
  6. 変数がセットされる順序

変数に値を保存する

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

変数の値を参照する

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

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

特別な変数

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

変数名説明
ENVIRONMENTテスト実行時に選択した環境「local_pc」「magic_pod」「browserstack」「headspin」「remote_testkit」「saucelabs」のいずれか。「クラウド」を選択した場合は「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の赤枠の鍵マークを押下します。

図3 共有変数の設定

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

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

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

コマンドラインから共有変数を使う

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

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

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

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

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

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

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

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

「日時を保存」コマンドの日付書式

「日時を保存」のコマンドを利用する場合に、最初から用意されている「日付種別」だけではやりたいことが実現できないケースがあると思います(例えば「05月」のような、ゼロ埋めされた月を取得したいなど)。こういった場合には、「日付種別」を「日付書式指定」にすることで、様々な「日付書式」を指定できます。例えば、ゼロ埋めされた月の値を変数に保存したい場合は、「日付書式」に「MM月」を指定します。

ゼロ埋めを伴う月表記の日付書式

他には、「yyyy/LL/dd(EEE) hh:mm:ss」と書くことで、「2020/05/01(金) 05:47:25」のような日時を変数保存することができます。「日付書式」の記法は、date-fnsというライブラリのものが利用できます。より細かい記述方法等に関してはこちらをご参照ください。

また、「日付書式」入力エリアには変数を使うこともできます。そのため、 例えば、「MM月」という文字列を変数「MONTH_FORMAT」に予め保存しておき、 日付書式に${MONTH_FORMAT}を指定することも可能です。

変数がセットされる順序

データパターンの値や変数が複数ある場合、以下の順序でセットされます。

  1. 共有変数
  2. 多言語データパターン
  3. データパターン
  4. テストスクリプト中の変数保存コマンド
  • 既にセットされた変数は、${...}で参照することができます。
  • 同じ名前の変数が既にセットされている場合、新しくセットした値で古い値は上書きされます。