테스트를 수행할 때 내가 작성한 테스트 코드가 프로그램의 코드들을 얼만큼 커버하고 있는지를 나타내는 값이다.
다시 말하면 작성된 코드가 적어도 한 번은 실행되었는가?를 확인하는 것이다.
pytest에서는 이러한 coverage를 확인하기 위한 도구로 pytest-coverage를 지원한다.
documents👇
pytest-cov docs
coverage.py docs
coverage는 IDE와 연결되어 coverage 결과와 테스트된/안된 line들을 확인할 수 있는데, 안타깝게도 pycharm community version에서는 지원하지 않는 기능이라서 command line 상에서 진행해보았다.
$> pip install pytest-cov
# poetry를 사용한다면 dev dependancy만 추가
$> poetry add -D pytest-cov
먼저 coverage 측정을 위해서 pytest coverage를 설치한다.
pip로 설치를 해도 되지만, poetry를 사용하고 있어서 개발자 도구에만 dependency가 추가되도록 했다.
$> pytest --cov-report term --cov=[coverage 진행할 위치]
명령어로 실행하면 다음과 같이 coverage 결과를 확인할 수 있다.
어떤 line이 miss 되었는지 확인하고 싶다면,
$> pytest --cov-report term-missing --cov=[coverage 진행할 위치]
명령어를 통해서 다음과 같은 결과를 얻을 수 있다.
혹은
$> coverage report
# miss line 확인
$> coverage report -m
명령어를 통해서 직전에 진행한 pytest coverage에 대한 결과값을 확인할 수 있다.
터미널 상에서는 miss line들을 직접 확인할 수 없다는 단점이 있는데,
$> coverage html
명령어를 실행하면 htmlcov 폴더가 생성되면서 내부에 각 파일 별 coverage 정도가 표시된 html 파일들이 생성된다.
html 파일을 통해서 테스트 된 코드와 테스트 되지 않은 코드를 손쉽게 확인할 수 있게된다.
물론 IDE에서 연동이 된다면 굳이 이렇게 확인할 필요 없이 편하게 확인이 가능하다^^