소개
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의 다양한 기능과 확장 가능성을 활용하여 효과적인 테스트 코드를 작성해보세요.