피드로 돌아가기
Dev.toBackend
원문 읽기
Environment Variable 기반 경로 오버라이드로 Test Isolation 완벽 구현
My test had a comment that said 'in memory fallback'. It wasn't.
AI 요약
Context
Subprocess 테스트 시 pip install -e로 설치된 패키지가 Import 시점에 실제 Production state.json 경로를 고정적으로 참조하는 구조. 테스트 코드 내 "in memory fallback" 주석과 달리 실제 격리 메커니즘이 부재하여 Live 데이터 변조 위험이 잠재된 상태였음.
Technical Solution
X_ENGINE_STATE_PATH환경 변수를 도입하여config.STATE_PATH를 동적으로 덮어쓰는 오버라이드 메커니즘 설계- Parent Process의 Monkeypatch가 Subprocess에 전달되지 않는 특성을 고려하여 OS 레벨 환경 변수를 통한 경로 주입 방식 채택
tmp_pathfixture를 활용하여 각 Subprocess 테스트가 독립적인 임시 파일 경로를 참조하도록 강제- Production 환경의 기본값은 유지하여 기존 시스템 영향도를 제로화한 안전한 배포 전략 적용
- 전체 테스트 스위트 실행 전후의
state.json바이트 단위 Diff 검증을 통한 격리 완결성 확보
실천 포인트
1. Subprocess 테스트 설계 시 Parent의 Mocking/Monkeypatching이 적용되지 않음을 인지하고 환경 변수 기반 설정 주입을 검토했는가?
2. 상태를 변경하는 테스트가 실제 Production 경로를 참조할 가능성을 제거하기 위해 `tmp_path` 등의 격리된 저장소를 사용했는가?
3. 테스트 주석에 명시된 Isolation 전략이 실제 코드로 구현되어 있으며, 이를 검증하는 테스트 케이스가 존재하는가?