PythonでPlaywrightの自動テストを書いていると、「stg と test を切り替えたい」「でもURLやパスワードを直書きするのは危ないし面倒」と思うことはありませんか?
私も最初はコードに書き込んでしまって、環境を変えるたびに修正してはミスしていました。
でも実は、設定ファイルをちょっと工夫するだけで、コードは1本のまま。
実行時に「環境を選ぶだけ」で、自動的に正しいURLやログイン情報を読み込んでテストできるようになります。
この記事では Gitを使わない前提 で、ローカル専用の運用方法に絞って解説します。
コーディング初心者でも、そのまま手順通りにコピペすれば動きます。
結論(最短手順)
.env
を環境ごとに作る(ローカル専用の場所に保存)launch.json
は1つだけ(起動時に環境を選択できる)- コード側は
.env.{環境}
を読むだけ
Step1:.env を環境ごとに作る
📌 例:プロジェクト直下
に保存
.env.stg
.env.test
例:.env.stg
URL=https://stg.example.app/login
TENANT=example-tenant
EMAIL=user@example.com
PASSWORD=your-password-here
例:.env.test
URL=https://test.example.app/login
TENANT=example-tenant
EMAIL=user@example.com
PASSWORD=your-password-here
👉 クラウド同期フォルダ(デスクトップ自動同期など)には置かないのが無難です。
迷ったら、プロジェクト直下に置けばOK(あなたのPC内だけで使う想定)。
Step2:VS Code の launch.json(1つだけ)
📌 作成場所:.vscode/launch.json
{
"version": "0.2.0",
"inputs": [
{
"id": "env",
"type": "pickString",
"description": "実行する環境を選択",
"options": ["stg", "test", "dev", "prod"],
"default": "stg"
}
],
"configurations": [
{
"name": "Run Tests (選択式)",
"type": "debugpy",
"request": "launch",
"program": "${workspaceFolder}/run_tests.py",
"args": ["--env", "${input:env}"]
}
]
}
👉 F5するとポップアップが出て、stg / test / dev / prod を選べるようになります。
Step3:環境読み込みのヘルパー(modules/config_loader.py)
from dataclasses import dataclass
from pathlib import Path
import os
from dotenv import load_dotenv
@dataclass
class Auth:
url: str
tenant: str
email: str
password: str
def load_auth(env_name: str | None = None) -> Auth:
env = env_name or os.getenv("APP_ENV", "stg")
root = Path(__file__).resolve().parents[1]
# 1) プロジェクト直下 .env.{env}
env_file = root / f".env.{env}"
# 2) フォールバック: プロジェクト直下 .env
if not env_file.exists():
env_file = root / ".env"
if not env_file.exists():
raise FileNotFoundError(f"環境ファイルが見つかりません: {env_file}")
load_dotenv(env_file)
for k in ["URL", "TENANT", "EMAIL", "PASSWORD"]:
if not os.getenv(k):
raise RuntimeError(f"{k} が .env にありません")
return Auth(
url=os.getenv("URL", ""),
tenant=os.getenv("TENANT", ""),
email=os.getenv("EMAIL", ""),
password=os.getenv("PASSWORD", ""),
)
Step4:メインスクリプト(run_tests.py)
import argparse
from modules.config_loader import load_auth
from modules.login_flow import login_and_get_page # 既存の関数を利用
if __name__ == "__main__":
p = argparse.ArgumentParser()
p.add_argument("--env", choices=["stg", "test", "dev", "prod"])
args = p.parse_args()
auth = load_auth(args.env)
page = login_and_get_page(
url=auth.url, tenant=auth.tenant,
email=auth.email, password=auth.password
)
# ...以降テスト処理
👉 これで コードは1本のまま、直書きのURLやID/パスワードは不要になります。
Step5:使い方
- F5 を押す。
- 「環境を選択(stg / test / dev / prod)」ポップアップが出る。
- 選んで実行。
「Gitなし」運用での注意点(かんたん版)
.env
は あなたのPCだけで使う想定。共有の必要が出るまで特に気にしなくてOK。- 自動クラウド同期(OneDriveやiCloudなど)が効いている場所は避けると安心。
ちょっと安心テク
- Windowsなら
.env.xxx
を右クリック → プロパティ → 「読み取り専用」にしておくと誤編集防止に。 - 「隠しファイル」にすると目立たなくなり、うっかり開くミスを減らせます。
さらに安全にしたい人向け(任意)
「パスワードだけはファイルに書きたくない」場合は、OSの資格情報を使えます。
Pythonなら keyring
が便利です。
インストール
pip install keyring
パスワードを登録(1度だけ)
python -c "import keyring; keyring.set_password('retail-app','stg','your-password-here')"
python -c "import keyring; keyring.set_password('retail-app','test','your-password-here')"
読み出し
import keyring
pwd = keyring.get_password("retail-app", env) # env は 'stg' など
👉 これで .env
の PASSWORD
を空にしても運用できます。
初心者はまず「全部 .env」にまとめ、慣れてきたら「パスワードだけ keyring」に移行すると楽です。
最後のチェックリスト
-
.env.stg
/.env.test
を作った(ローカル専用の置き場所) - コードから直書きのURL/TENANT/EMAIL/PASSWORDを削除した
-
launch.json
を「1構成+起動時選択」にした - F5 → 環境選択 → 実行できることを確認
- (任意)パスワードを keyring に移行
まとめ
- .env で環境ごとに設定を分離すれば、コードは1本のまま。
- VS Codeの構成は1つだけで、起動時に環境を選べる。
- Gitを使わなくても、自分のPCで安全に環境切替を運用できる。
👉 QAエンジニアが「選ぶだけ」でテストを回せる環境が整います。