[파이썬] unittest 테스트 커버리지 분석하기

테스트 커버리지(Test coverage)는 소프트웨어 개발 과정에서 중요한 지표 중 하나입니다. 이는 테스트 스위트에서 얼마나 많은 코드가 실행되었는지를 측정하는 도구입니다. Python의 unittest 모듈은 테스트 커버리지를 측정하는 강력한 기능을 제공합니다.

1. coverage 모듈 설치하기

테스트 커버리지를 분석하기 위해서는 coverage 모듈을 먼저 설치해야합니다. 아래의 명령을 사용하여 설치할 수 있습니다.

pip install coverage

2. 단위 테스트 작성하기

테스트 커버리지를 분석하기 위해서는 먼저 단위 테스트를 작성해야 합니다. unittest 모듈을 사용하여 단위 테스트를 작성할 수 있습니다. 아래는 간단한 예제입니다.

import unittest

def add_numbers(a, b):
    return a + b

class TestAddNumbers(unittest.TestCase):

    def test_add_numbers(self):
        result = add_numbers(3, 4)
        self.assertEqual(result, 7)

if __name__ == '__main__':
    unittest.main()

3. coverage 실행하기

테스트를 실행하기 전에 coverage를 실행하여 테스트 커버리지를 측정할 수 있습니다. 아래의 명령을 사용하여 실행할 수 있습니다.

coverage run -m unittest test_module.py

4. coverage 보고서 생성하기

테스트 실행 후 coverage 보고서를 생성할 수 있습니다. 아래의 명령을 사용하여 보고서를 생성할 수 있습니다.

coverage report -m

위 명령을 실행하면 함수, 클래스, 모듈 등의 커버리지 정보가 나타나는 보고서가 생성됩니다. -m은 누락된 라인에 대한 각각의 원인을 자세히 보여주는 옵션입니다.

5. HTML 보고서 생성하기

coverage는 HTML 보고서도 생성할 수 있습니다. 아래의 명령을 사용하여 HTML 보고서를 생성할 수 있습니다.

coverage html

위 명령을 실행하면 htmlcov라는 디렉토리에 HTML 형식의 보고서가 생성됩니다.

6. 결과 분석하기

커버리지 보고서를 통해 코드의 실행 여부를 확인할 수 있습니다. 실행되지 않은 코드 라인은 놓친 테스트 케이스를 확인하는 데 도움을 줄 수 있습니다. 테스트 커버리지가 높으면 보다 안정적인 코드를 작성할 수 있습니다.

위에서 작성한 예제의 경우, coverage report -m 명령을 실행하면 다음과 같은 결과가 출력될 수 있습니다.

Name             Stmts   Miss  Cover   Missing
----------------------------------------------
test_module.py       6      0   100%

위 결과에서는 테스트 모듈에 있는 모든 문장을 테스트 한 것으로 100%의 커버리지를 가지고 있음을 알 수 있습니다.

마무리

Unittest를 사용하여 테스트 커버리지를 분석하는 방법에 대해 알아보았습니다. 테스트 커버리지는 코드의 품질을 평가하는 데 중요한 지표 중 하나입니다. 적절한 테스트 케이스를 작성하여 커버리지를 측정하고, 커버리지 보고서를 분석하여 코드의 품질을 높일 수 있습니다.