[파이썬] unittest TestLoader 클래스 활용하기

소개

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() 메소드를 사용하여 로딩된 테스트 스위트를 생성한 후, TestSuitefilter() 메소드를 사용하여 특정 클래스의 테스트만을 필터링할 수 있습니다.

마무리

unittest.TestLoader 클래스는 테스트 스위트를 로딩하고 실행하는 데 매우 유용한 도구입니다. 위에서 설명한 방법을 사용하여 테스트 스위트를 동적으로 로딩하고 필터링하여 코드의 품질을 향상시킬 수 있습니다. unittest 모듈의 다른 기능과 결합하여 강력한 테스트 스위트를 구성할 수 있으며, 코드 변경이나 리팩토링에 따라 테스트를 유연하게 관리할 수 있습니다.