Chapter 2-2 Coverage 설치 및 테스트 커버리지 가이드

2025. 5. 23. 10:31·Fastapi
목차
  1. 📊 Coverage 설치 및 테스트 커버리지 가이드
  2. 🛠️ Coverage 설치
  3. ❓ Coverage란 무엇인가?
  4. 🧪 예제: coverage 측정 실습
  5. 🧼 테스트 코드 제외 (omit 설정)
  6. 🔄 테스트 코드와 제품 코드 분리
  7. 🌐 HTML 커버리지 보고서
  8. ✅ 정리

📊 Coverage 설치 및 테스트 커버리지 가이드

🛠️ Coverage 설치

poetry add --group=dev coverage==7.6.9

❓ Coverage란 무엇인가?

  • 단위 테스트의 품질을 측정하는 도구입니다.
  • 커버리지 없는 테스트는 반쪽짜리 테스트입니다.
  • 테스트 중에 실제로 실행된 제품 코드의 비율을 측정합니다.

수식 정의:

Coverage = (테스트 도중 한 번이라도 실행된 제품 코드 라인 수) / (전체 제품 코드 라인 수)

🧪 예제: coverage 측정 실습

temp.py

def add(a: int, b: int) -> int:
    return a + b

def mul(a: int, b: int) -> int:
    return a * b

def test_add() -> None:
    a, b = 1, 1
    result = add(a, b)
    assert result == 2

실행 명령어

poetry run coverage run -m pytest temp.py
poetry run coverage report -m

📋 출력 예시:

Name      Stmts   Miss  Cover   Missing
---------------------------------------
temp.py       8      1    88%   6
TOTAL         8      1    88%

✅ mul() 함수가 실행되지 않았으므로 라인 6이 miss로 표시됨


🧼 테스트 코드 제외 (omit 설정)

테스트 코드는 항상 실행되므로 커버리지에 포함되면 실제 품질을 왜곡시킵니다. 이를 제외하려면 pyproject.toml에 다음 설정 추가:

[tool.coverage.run]
omit = ["*/test_*.py"]

🔄 테스트 코드와 제품 코드 분리

temp.py

def add(a: int, b: int) -> int:
    return a + b

def mul(a: int, b: int) -> int:
    return a * b

test_temp.py

from temp import add

def test_add() -> None:
    a, b = 1, 1
    result = add(a, b)
    assert result == 2

실행 명령어

poetry run coverage run -m pytest test_temp.py
poetry run coverage report -m

📋 출력 예시:

Name      Stmts   Miss  Cover   Missing
---------------------------------------
temp.py       4      1    75%   6
TOTAL         4      1    75%

➡️ 이제 테스트 코드가 제외되어 정확한 coverage가 측정됨


🌐 HTML 커버리지 보고서

poetry run coverage html
  • htmlcov/index.html 경로에서 시각적으로 보고서 확인 가능

✅ 정리

  • ✅ 단위 테스트만 실행해서는 검증되지 않은 코드가 있는지 알 수 없음
  • ✅ 커버리지를 통해 검증되지 않은 영역 식별 가능
  • ✅ 테스트 코드 제외 설정 필수 (omit)
  • ✅ 실행 명령어:
    • poetry run coverage run -m pytest .
    • poetry run coverage report -m
    • poetry run coverage html

커버리지는 '무엇을 테스트했는가'를 넘어 '무엇을 테스트하지 않았는가'를 알려주는 도구입니다.

'Fastapi' 카테고리의 다른 글

Chapter 2-4 자동화 테스트가 필요한 이유  (0) 2025.05.23
Chapter 2-3 Dev Dependency 개념 및 활용 가이드(의존성 관리)  (0) 2025.05.23
Chapter 2-1 Pytest 설치 및 단위 테스트 입문 가이드  (0) 2025.05.23
Chapter 1-6 Mypy 설치 및 정적 타입 검사 가이드  (0) 2025.05.23
Chapter 1-5 Git 기본 세팅 및 커밋 가이드  (0) 2025.05.23
  1. 📊 Coverage 설치 및 테스트 커버리지 가이드
  2. 🛠️ Coverage 설치
  3. ❓ Coverage란 무엇인가?
  4. 🧪 예제: coverage 측정 실습
  5. 🧼 테스트 코드 제외 (omit 설정)
  6. 🔄 테스트 코드와 제품 코드 분리
  7. 🌐 HTML 커버리지 보고서
  8. ✅ 정리
'Fastapi' 카테고리의 다른 글
  • Chapter 2-4 자동화 테스트가 필요한 이유
  • Chapter 2-3 Dev Dependency 개념 및 활용 가이드(의존성 관리)
  • Chapter 2-1 Pytest 설치 및 단위 테스트 입문 가이드
  • Chapter 1-6 Mypy 설치 및 정적 타입 검사 가이드
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (794) N
      • Python (32)
      • 프로젝트 (113)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (154) N
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    bts
    chinanightlife
    newpoliticalparty
    btscomeback
    global politics
    btsdischarge
    college reunions
    youngprofessionals
    smartphonedurability
    remittance
    urbantrends
    travel ban
    gpterror
    self-growth
    livebroadcast
    hotcoffeecase
    basalcellcarcinoma
    americanlaw
    RM
    homebartrend
    classaction
    trumpmuskclash
    americaparty
    뷔
    lawsuitculture
    life reflection
    titaniumcase
    chatgpterror
    btsreunion
    btsjungkook
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Chapter 2-2 Coverage 설치 및 테스트 커버리지 가이드

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.