開発環境と本番環境で異なる値を使用したい場合など、テスト実行時に変数の値を外側から指定したいことがあります。
MagicPodでは、共有変数を使用して、コマンドラインから一括実行を行う際に、任意の値を指定してテストを実行できます。
クラウド環境で実行する場合
クラウド環境では、コマンドラインから一括実行を行う際に、test_settings_number を使用しない形式のコマンドを利用することで、実行時に共有変数の値を指定できます。
まず、一括実行設定画面で、共有変数を含む一括実行設定を作成します。
その後、「テストを一括実行」ボタンの右側にある三点リーダ(︙)から、「コマンドラインで実行」を選択します。
このとき、実行方法のプルダウンから「(詳細設定)」 と表示されているコマンドを選択してください。
以下では、magicpod-api-client形式のコマンドを例に説明します。
「(詳細設定)」を選択すると、test_settings_number を使用せず、一括実行設定の内容がコマンド内に直接記述された形式のコマンドが表示されます。
コマンド内に記述された設定内容は自由に編集できるため、コマンドをコピーした後、shared_variables の value に任意の値を設定してください。
これにより、指定した共有変数の値を使用してテストを実行できます。
シークレット共有変数を環境変数として設定する
一括実行設定にシークレット共有変数が含まれている場合、「(詳細設定)」のコマンドでは、デフォルトで環境変数を使用するコマンドが表示されます。
たとえば、シークレット共有変数 PASSWORD が設定されている場合、コマンド内の shared_variables の value には ${PASSWORD} が設定されます。
"shared_variables": [
{
"key": "PASSWORD",
"value": "${PASSWORD}",
"secret": true
}
]コマンドの先頭には、以下のような環境変数に値を設定する記述が追加されます。
SECRET_API_TOKEN="***" PASSWORD="値を入力してください" ./magicpod-api-client batch-run ...
そのため、PASSWORD の「値を入力してください」の部分を、実際に使用する値に変更してからコマンドを実行してください。
なお、シークレット共有変数についても、環境変数を使用せず、shared_variables の value に値を直接記述することも可能です。
"shared_variables": [
{
"key": "USERNAME",
"value": "test_user",
"secret": false
},
{
"key": "PASSWORD",
"value": "test_pass",
"secret": true
}
]※実際にコピーされるコマンドでは、shared_variables を含むJSON内のダブルクォーテーションがエスケープされています。上記では説明を分かりやすくするため、エスケープ文字を省略しています。
ローカルPC環境で実行する場合
ローカルPC環境では、magic_pod_config.json の testCondition.shared_variables に共有変数を設定することで、コマンドラインから一括実行を行う際に、共有変数の値を指定できます。
たとえば、以下のような magic_pod_config.json を使用しているとします。
{
"owner": "SampleCompany",
"project": "SampleApp",
"capabilities": {
"platformName": "iOS",
"platformVersion": "10.3",
"deviceName": "iPhone 7 Plus",
"app": "${HOME}/magicpod_demo_app.app",
"automationName": "XCUITest"
},
"sendMail": true,
"workDir": "${HOME}/magicpod-work"
}共有変数を使用する場合は、testCondition プロパティを追加し、shared_variables に共有変数を設定します。
{
"owner": "SampleCompany",
"project": "SampleApp",
"capabilities": {
"platformName": "iOS",
"platformVersion": "10.3",
"deviceName": "iPhone 7 Plus",
"app": "${HOME}/magicpod_demo_app.app",
"automationName": "XCUITest"
},
"sendMail": true,
"workDir": "${HOME}/magicpod-work",
"testCondition": {
"shared_variables": [
{
"key": "USERNAME",
"value": "test_user",
"secret": false
}
]
}
}設定後は、通常のコマンドライン実行と同じコマンドを使用してテストを実行できます。
シークレット共有変数を環境変数として設定する
シークレット共有変数を使用する場合は、shared_variables の value に環境変数を設定できます。
たとえば、シークレット共有変数 PASSWORD を使用する場合は、value に ${PASSWORD} を設定します。
{
...
"testCondition": {
"shared_variables": [
{
"key": "USERNAME",
"value": "test_user",
"secret": false
},
{
"key": "PASSWORD",
"value": "${PASSWORD}",
"secret": true
}
]
}
}実行時には、環境変数に値を設定してからコマンドを実行してください。
以下はmacOSでのコマンド例です。
PASSWORD=test_pass "MagicPodDesktop.app/Contents/MacOS/MagicPodDesktop" run --magic_pod_config="<magic_pod_config.jsonのフルパス>"
なお、シークレット共有変数についても、環境変数を使用せず、shared_variables の value に値を直接記述することも可能です。
"shared_variables": [
{
"key": "USERNAME",
"value": "test_user",
"secret": false
},
{
"key": "PASSWORD",
"value": "test_pass",
"secret": true
}
]