[파이썬] unittest 테스트 결과를 XML로 출력하기

소개

unittest는 Python에서 테스트를 작성하고 실행하기 위한 내장 테스트 프레임워크입니다. unittest 모듈은 테스트 결과를 터미널에 출력하지만, 때로는 XML 형식으로 결과를 출력해야 할 필요가 있습니다. 이 글에서는 unittest 테스트 결과를 XML로 출력하는 방법에 대해 알아보겠습니다.

unittest 결과를 XML로 출력하기

unittest의 TextTestRunner 클래스를 사용하여 테스트 결과를 XML로 출력할 수 있습니다. 아래의 예제 코드를 통해 실제 구현 방법을 확인해봅시다.

import unittest
import xmlrunner

class MyTestCase(unittest.TestCase):
    def test_addition(self):
        self.assertEqual(2 + 2, 4)

if __name__ == '__main__':
    # 테스트를 수행할 테스트 스위트 생성
    suite = unittest.TestLoader().loadTestsFromTestCase(MyTestCase)

    # XML로 결과를 출력할 수 있도록 TextTestRunner를 확장한 XMLTestRunner 생성
    runner = xmlrunner.XMLTestRunner(output='test-reports')

    # 테스트 실행
    runner.run(suite)

위 예제 코드에서는 unittest를 사용하여 MyTestCase라는 테스트 케이스 클래스를 정의하고, test_addition이라는 테스트 메소드를 작성했습니다. 이 메소드에서는 2+2가 4인지 확인하는 단언문을 사용합니다.

if __name__ == '__main__':을 사용하여 스크립트 파일을 직접 실행할 때에만 테스트가 실행되도록 설정합니다. 그리고 TestLoader 클래스를 사용하여 테스트 스위트를 생성하고, XMLTestRunner를 생성하여 결과를 XML로 출력합니다. 출력 결과는 ‘test-reports’ 디렉토리에 저장됩니다.

위 코드를 실행하면 다음과 같은 XML 파일이 생성됩니다.

<testsuite errors="0" failures="0" name="MyTestCase" skips="0" tests="1" time="0.001">
    <testcase classname="MyTestCase" name="test_addition" time="0.001"/>
</testsuite>

이 XML은 테스트를 성공적으로 통과한 것을 나타내며, errors, failures, skips, tests 등의 속성을 통해 자세한 정보를 확인할 수 있습니다.

마무리

위 예제 코드를 통해 unittest 테스트 결과를 XML로 출력하는 방법에 대해 알아보았습니다. 이를 활용하면 CI/CD 파이프라인 등에서 테스트 결과를 분석하거나 보고서를 생성하는 데 유용하게 사용할 수 있습니다. unittest의 다양한 기능과 확장 가능성을 활용하여 효과적인 테스트 코드를 작성해보세요.