
데이터 분석 라이브러리 개발기 (2) - 통합 테스팅과 문서화를 동시에 잡는 방법
두줄요약
MinIO와 pytest fixture로 S3 의존성 없는 PySpark 통합 테스트 환경을 구축했습니다.\npytest doctest와 Sphinx를 결합해 실행 가능한 API 문서를 유지했습니다.
문제 상황
- PySpark와 Amazon S3 입출력에 의존하는 데이터 분석 라이브러리의 복잡한 통합 테스트
- 실제 S3 기반 테스트의 권한 제약, 느린 실행, 테스트 데이터 생성 부담, 실행 환경 미격리
- 함수 변경 시 누락되기 쉬운 docstring 용례와 레퍼런스 문서 관리
해결 방법
- pytest fixture로 Spark Session, 설정, 버킷, 테스트 데이터를 조합한 테스트 환경 구성
- MinIO 서버를 테스트마다 로컬 S3 호환 스토리지로 사용해 실제 S3 의존성 제거
- pytest doctest로 docstring의 실행 예제와 기대 결과 검증
구조와 흐름
- MinIO fixture 기동 후 버킷 생성과 Parquet 테스트 데이터 적재
- MinIO 엔드포인트·접근 키를 주입한 Spark Session으로 S3A 요청 연결
- 데이터 fixture와 DevPlay Analytics fixture를 테스트 함수 인자로 주입
성능/운영 포인트
- 외부 S3 권한 없이 빠르고 격리된 로컬 통합 테스트 환경
- Sphinx automodule 기반 레퍼런스 문서와 실행 가능한 doctest의 단일 소스화
- API 문서화 커버리지와 pytest 테스트 커버리지의 동시 확대


