AppiumでAndroidアプリの自動テストを書いたとき、「staging 用のアプリ」「testing 用のアプリ」といった別パッケージのアプリを切り替えて動かしたいと思ったことはありませんか?
でも毎回テストコードを直すのは大変ですし、間違えるとエラーで止まってしまいます。
私も最初は「同じテストを環境違いでどう回せばいいの?」と悩みました。
でも、設定ファイルを工夫すれば、1つのテストコードをそのまま流用しつつ、環境ごとに簡単に切り替えて実行できる ようになります。
この記事では、コードを触らなくてもOKな運用方法として、environments.json
と launch.json
を使った切替手順を解説します。
テスト初心者のQAエンジニアでも、この通りに設定すれば動きます。
environments.json(環境定義の元帳)
まずは、環境ごとにアプリやログイン情報をまとめる「元帳」を作ります。
これがあることで、テストコードは一切変更せずに済みます。
📌 作成場所:your_project/environments.json
{
"staging": {
"serverUrl": "http://localhost:4723/",
"capabilities": {
"platformName": "Android",
"automationName": "UiAutomator2",
"deviceName": "AndroidDevice",
"appPackage": "com.example.app.staging",
"appActivity": "com.example.app.MainActivity",
"appWaitActivity": "*",
"noReset": true,
"autoGrantPermissions": true
},
"credentials": {
"tenant": "your-tenant",
"email": "user-stg@example.com",
"password": "********"
}
},
"testing": {
"serverUrl": "http://localhost:4723/",
"capabilities": {
"platformName": "Android",
"automationName": "UiAutomator2",
"deviceName": "AndroidDevice",
"appPackage": "com.example.app.testing",
"appActivity": "com.example.app.MainActivity",
"appWaitActivity": "*",
"noReset": true,
"autoGrantPermissions": true
},
"credentials": {
"tenant": "your-tenant",
"email": "user-tst@example.com",
"password": "********"
}
}
}
各設定の意味
- serverUrl:Appiumサーバの場所。ローカルなら
http://localhost:4723
。リモートに切り替える場合もここだけ差し替えればOK。 - platformName / automationName:Android自動化に必須の設定。
- appPackage(★):起動するアプリを指定。環境ごとに違うので、ここを切り替えるのがポイント。
- appActivity:アプリ起動時の入り口。共通なら全環境同じでOK。
- appWaitActivity:起動直後の遷移待ち。
"*"
にするとスプラッシュや初回画面に強い。 - noReset:
true
ならログイン状態や初回設定を保持できる。毎回初期化したいならfalse
に。 - autoGrantPermissions:初回権限ダイアログを自動許可。テストが止まらなくなる。
- credentials:ログイン用のメールやパスワードを環境ごとに管理。コードでは「env.credentials」を読むだけで済む。
👉 切替の主役は appPackage
と credentials
です。
VS Code の launch.json(環境を選んでF5)
次に、VS Codeから環境を選べるように設定します。
これで、右上のプルダウンから「staging」や「testing」を選ぶだけで実行できます。
📌 作成場所:your_project/.vscode/launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Login Test – staging",
"type": "debugpy",
"request": "launch",
"module": "scripts.login_test",
"args": ["--env", "staging"],
"console": "integratedTerminal"
},
{
"name": "Login Test – testing",
"type": "debugpy",
"request": "launch",
"module": "scripts.login_test",
"args": ["--env", "testing"],
"console": "integratedTerminal"
}
]
}
この設定のポイント
- module:
scripts.login_test
のように指定することで import が安定します。 - args [“–env”, “staging”]:ここで環境を指定。テストコードは触らなくてOK。
- 複数設定:
configurations
に環境ごとのプリセットを並べることで、QAメンバー全員が迷わず同じ条件で実行できます。
👉 すでに scripts/.vscode/launch.json
を作っている場合は削除し、ルート直下の .vscode/launch.json
に統一してください。
実行時の流れ(設定だけで切替運用)
- Appiumサーバを起動(別ウィンドウで
appium
)。 - 端末接続を確認(
adb devices
)。 - VS Code右上のプルダウンから「Login Test – staging」などを選択。
- F5キーで実行。
- 環境を変えたいときは、プルダウンから「Login Test – testing」を選ぶだけ。
👉 テストコードは一切いじらず、設定だけで環境切替ができます。
まとめ
- 環境定義は
environments.json
にまとめる。 - 切替の主役は
appPackage
とcredentials
。 - 実行は VS Codeの
launch.json
で –env を指定して切り替える。 - 誰でもプルダウンから環境を選んで実行できるので、再現性が高く、チーム運用にも安心。