코드로 우주평화

내가 쓴 Python 테스트 코드 coverage 알아보기 본문

나는 이렇게 학습한다/Debug

내가 쓴 Python 테스트 코드 coverage 알아보기

daco2020 2022. 3. 20. 00:34
반응형

 

커버리지란?

테스트 케이스가 얼마나 충족되었는지를 나타내는 지표 중 하나입니다. 테스트를 진행하였을 때 ‘코드 자체가 얼마나 실행되었느냐’는 것이고, 수치를 통해 확인할 수 있습니다.

 

 

 

커버리지를 확인하려면?

테스트 코드를 작성하다보면 내 코드의 커버리지가 얼마나 되는지 궁금해지는데요.

 

제가 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 방법을 알고 싶다면 공식문서를 참고해주세요.

 

Coverage.py — Coverage.py 6.3.2 documentation

Coverage.py is a tool for measuring code coverage of Python programs. It monitors your program, noting which parts of the code have been executed, then analyzes the source to identify code that could have been executed but was not. Coverage measurement is

coverage.readthedocs.io

 

 

반응형