"""설정 로딩 — 우선순위와 테스트 격리. 우선순위: 실제 환경변수 > 레포 최상위 .env > config.{APP_ENV}.toml .env 에 APP_ENV=local 이 들어 있어도 테스트는 반드시 test DB 를 봐야 한다 — 그 규칙이 깨지면 db_engine 픽스처의 TRUNCATE 가 dev DB 를 지운다. """ from config.server_configs import APP_ENV, external_api_config, main_db_config def test_tests_run_against_test_db(): """검증: 테스트 실행 시 바라보는 DB. 기대결과: APP_ENV=test, DB 이름에 'test' 포함 — .env 의 APP_ENV=local 에 끌려가지 않는다.""" assert APP_ENV == "test", f"테스트가 APP_ENV={APP_ENV} 로 돈다 — .env 나 실행 환경을 확인할 것" assert "test" in main_db_config.name, f"테스트가 비-test DB('{main_db_config.name}')를 가리킨다" def test_external_api_keys_are_absent_in_tests(): """검증: 테스트 환경의 외부 API 키. 기대결과: 전부 빈 값 — 테스트가 실제 외부 API 를 때리지 않는다(수집 경로는 MockAdapter 로 검증).""" for name in ("perplexity_api_key", "kakao_rest_api_key", "gemini_api_key", "tour_api_key"): # 값 자체는 출력하지 않는다(실키가 로그·CI 에 남지 않게). assert not getattr(external_api_config, name), f"{name} 이 테스트 환경에 설정돼 있다 — .env 가 새어 들어왔다"