PHpullh

PYTHON · 테스트

커버리지

테스트 커버리지를 측정하고 분석하여 테스트되지 않은 코드를 찾습니다.

테스트중급coverage커버리지pytest-cov코드 분석

핵심 설명

테스트 커버리지를 측정하고 분석하여 테스트되지 않은 코드를 찾습니다.

Python code

# coverage 라이브러리 사용 패턴 시뮬레이션
# pip install coverage pytest-cov

# 테스트 대상 코드
def calculate_grade(score: int) -> str:
    if score >= 90:
        return "A"
    elif score >= 80:
        return "B"
    elif score >= 70:
        return "C"
    elif score >= 60:
        return "D"
    else:
        return "F"

def is_prime(n: int) -> bool:
    if n < 2:
        return False
    if n == 2:
        return True
    if n % 2 == 0:
        return False
    for i in range(3, int(n**0.5) + 1, 2):
        if n % i == 0:
            return False
    return True

# 테스트
def test_grade():
    assert calculate_grade(95) == "A"
    assert calculate_grade(85) == "B"
    assert calculate_grade(75) == "C"
    assert calculate_grade(65) == "D"
    assert calculate_grade(50) == "F"
    print("test_grade 통과!")

def test_prime():
    assert not is_prime(1)
    assert is_prime(2)
    assert is_prime(3)
    assert not is_prime(4)
    assert is_prime(17)
    print("test_prime 통과!")

test_grade()
test_prime()

# 실행 방법:
# pytest --cov=src --cov-report=html
# coverage run -m pytest
# coverage report --show-missing
# coverage html  → htmlcov/index.html
print("\n커버리지 명령어:")
print("  pytest --cov=. --cov-report=term-missing")

학습 팁

--cov-report=term-missing으로 커버되지 않은 줄 번호를 터미널에서 바로 확인할 수 있습니다.

주의할 점

100% 커버리지가 버그 없음을 의미하지 않습니다. 커버리지는 테스트되지 않은 코드를 찾는 도구일 뿐입니다.

자주 묻는 질문

커버리지란 무엇인가요?

테스트 커버리지를 측정하고 분석하여 테스트되지 않은 코드를 찾습니다.

커버리지 학습 시 주의할 점은 무엇인가요?

100% 커버리지가 버그 없음을 의미하지 않습니다. 커버리지는 테스트되지 않은 코드를 찾는 도구일 뿐입니다.