Notice
Recent Posts
Recent Comments
Link
코드로 우주평화
내가 쓴 Python 테스트 코드 coverage 알아보기 본문
반응형
커버리지란?
테스트 케이스가 얼마나 충족되었는지를 나타내는 지표 중 하나입니다. 테스트를 진행하였을 때 ‘코드 자체가 얼마나 실행되었느냐’는 것이고, 수치를 통해 확인할 수 있습니다.
커버리지를 확인하려면?
테스트 코드를 작성하다보면 내 코드의 커버리지가 얼마나 되는지 궁금해지는데요.
제가 10초만에 커버리지를 확인할 수 있는 방법을 알려드리겠습니다.
(테스트 코드가 이미 작성되어있고 테스트를 실행할 수 있는 상황을 가정합니다.)
1. 먼저 coverage 라이브러리를 설치합니다.
pip install coverage
2-1. 만약 pytest 를 사용한다면 다음 명령어를 입력해주세요.
coverage run -m pytest
2-2. 만약 unittest 를 사용한다면 다음 명령어를 입력해주세요.
coverage run -m unittest discover
3. 커버리지 리포트를 호출합니다.
coverage report -m
커버리지 리포트
위의 명령어들이 정상적으로 수행되었다면 아래와 같은 리포트가 나올 것입니다.
Name Stmts Miss Cover Missing
-----------------------------------------------------------
apps/__init__.py 0 0 100%
apps/api/__init__.py 0 0 100%
apps/api/blog.py 19 0 100%
apps/config.py 2 0 100%
apps/main.py 13 2 85% 17, 22
apps/model/__init__.py 21 4 81% 16, 20-22
apps/service/__init__.py 0 0 100%
apps/service/logs.py 23 0 100%
apps/tests/__init__.py 0 0 100%
apps/tests/api/test_blog.py 29 0 100%
apps/tests/test_main.py 7 0 100%
-----------------------------------------------------------
TOTAL 114 6 95%
Stmts 는 명령문 수를 나타냅니다.
Miss 는 실행되지 않은 명령문 수를 나타냅니다.
Cover 는 테스트 커버리지 수치를 나타냅니다.
Missing 는 Miss 명령문의 줄 번호를 나타냅니다.
리포트에는 커버되지 않은 코드들을 구체적으로 표시해주므로 이를 참고하여 테스트 코드를 작성한다면 높은 커버리지를 획득할 수 있습니다.
더 자세한 coverage 방법을 알고 싶다면 공식문서를 참고해주세요.
반응형
'나는 이렇게 학습한다 > Debug' 카테고리의 다른 글
SQLAlchemy _ NotSupportedError(InvalidCachedStatementError) 에러 해결 (0) | 2022.04.29 |
---|---|
컬럼 속성 변경 후 alembic migration할 때 ‘None’ 생기는 현상 (0) | 2022.04.26 |
pytest _ 하나의 함수에서 복수 케이스 테스트 하는 방법 (0) | 2022.04.20 |
@pytest.fixture 로 test 데이터 세팅하기 (0) | 2022.04.14 |
[TIL]django__데이터 중복_IntegrityError_ValidationError (1) | 2021.11.21 |