코드 커버리지는 「테스트가 코드의 몇 %를 실제로 실행했는지」 측정하는 지표입니다.
100%여도 품질 보장은 아니지만, 「테스트 안 된 영역」을 발견하는 데 매우 유용합니다.
기본 사용.
pip install coverage.
coverage run -m pytest.
coverage report — 파일별 커버리지 % 출력.
coverage html — 색칠된 HTML 리포트(빨간색 = 안 실행된 줄).
pytest와 통합 — pytest-cov.
pip install pytest-cov.
pytest --cov=mymodule --cov-report=html.
한 명령으로 테스트 + 커버리지 동시.
분기 커버리지(branch coverage).
줄 단위로 보면 if문이 100%여도 「조건이 True일 때만 테스트, False는 안 됨」 가능.
coverage run --branch로 분기까지 측정.
더 엄격한 지표.
함정.
1) 100% 커버리지가 「버그 없음」을 보장 안 함 — 단지 「실행은 됐다」.
2) 무리하게 100% 추구하면 무의미한 테스트 양산.
3) 핵심 비즈니스 로직 90%·인프라 코드 50% 같은 「가중치 사고」가 더 현실적.
한 줄 요약
coverage는 테스트가 실행한 코드 비율 측정.
coverage·pytest-cov로 측정, HTML 리포트로 시각화, --branch로 분기까지.
100%가 품질 보장은 아니지만 사각지대 발견에 유용.
더 알아볼 것
- 코드 커버리지 vs 테스트 품질
- Codecov·Coveralls — CI 통합
- pragma: no cover — 제외 마킹