소개
unittest
는 파이썬에서 테스트를 작성하고 실행하는데 사용되는 내장 라이브러리입니다. unittest
를 사용하면 자동화된 테스트를 작성하여 코드의 품질을 향상시키고 버그를 줄일 수 있습니다. unittest
모듈은 여러가지 기능을 제공하는데, 그 중에서도 TestLoader
클래스는 특히 유용하며 테스트 스위트를 쉽게 로딩하고 실행할 수 있게 해줍니다.
TestLoader
클래스란?
TestLoader
클래스는 테스트 로딩 및 검색을 담당하는 클래스로, 테스트 메소드를 자동으로 검색하여 테스트 스위트를 생성하는 역할을 합니다. TestLoader
클래스는 다음과 같은 기능을 제공합니다:
- 특정 디렉토리 또는 모듈에서 테스트를 로딩합니다.
- 로딩된 테스트 클래스 또는 메소드를 특정 패턴으로 필터링합니다.
- 로딩된 테스트 스위트를 반환합니다.
TestLoader
사용 방법
1. 모듈에서 테스트 로딩하기
다음 예제는 my_module
모듈에서 테스트 클래스를 로딩하는 방법을 보여줍니다.
import unittest
loader = unittest.TestLoader()
test_suite = loader.loadTestsFromModule(my_module)
unittest.TextTestRunner().run(test_suite)
loadTestsFromModule()
메소드는 주어진 모듈에서 테스트 클래스를 로딩하여 TestSuite
객체를 반환합니다. 이를 통해 해당 모듈의 모든 테스트를 실행할 수 있습니다.
2. 디렉토리에서 테스트 로딩하기
다음 예제는 test_directory
디렉토리에서 테스트를 로딩하는 방법을 보여줍니다.
import unittest
loader = unittest.TestLoader()
test_suite = loader.discover('test_directory')
unittest.TextTestRunner().run(test_suite)
discover()
메소드는 주어진 디렉토리에서 테스트를 재귀적으로 검색하여 TestSuite
객체를 반환합니다. 디렉토리에 있는 모든 테스트 파일을 찾고 실행할 수 있습니다.
3. 클래스 또는 메소드로 필터링하기
TestLoader
클래스는 로딩된 테스트 스위트를 필터링하는 기능도 제공합니다. 다음 예제는 TestSuite
에서 특정 클래스의 테스트만 필터링하는 방법을 보여줍니다.
import unittest
loader = unittest.TestLoader()
test_suite = loader.loadTestsFromModule(my_module)
filtered_suite = unittest.TestSuite(filter(lambda x: isinstance(x, MyClass), test_suite))
unittest.TextTestRunner().run(filtered_suite)
loadTestsFromModule()
메소드를 사용하여 로딩된 테스트 스위트를 생성한 후, TestSuite
의 filter()
메소드를 사용하여 특정 클래스의 테스트만을 필터링할 수 있습니다.
마무리
unittest.TestLoader
클래스는 테스트 스위트를 로딩하고 실행하는 데 매우 유용한 도구입니다. 위에서 설명한 방법을 사용하여 테스트 스위트를 동적으로 로딩하고 필터링하여 코드의 품질을 향상시킬 수 있습니다. unittest
모듈의 다른 기능과 결합하여 강력한 테스트 스위트를 구성할 수 있으며, 코드 변경이나 리팩토링에 따라 테스트를 유연하게 관리할 수 있습니다.