[파이썬] unittest 테스트와 디버깅

프로그래밍을 하다보면 코드의 신뢰성을 검증하기 위해 테스트를 작성해야 할 때가 있습니다. 이때, 파이썬에서는 unittest 모듈을 사용하여 테스트를 작성할 수 있습니다. unittest 모듈을 사용하면 간단하게 테스트 케이스를 작성하고 실행할 수 있습니다. 또한, 테스트를 실행하면서 디버깅을 할 수도 있습니다.

unittest 테스트 작성하기

unittest 모듈을 사용하여 테스트를 작성하려면 다음과 같은 단계를 따라야 합니다.

  1. unittest.TestCase 클래스를 상속받은 테스트 클래스를 만듭니다.
  2. 각 테스트 케이스마다 test_로 시작하는 메서드를 만듭니다.
  3. assert 문을 사용하여 예상 결과와 실제 결과를 비교합니다.

예를 들어, 다음과 같이 간단한 문자열 계산기를 테스트하는 테스트 케이스를 작성할 수 있습니다.

import unittest

class CalculatorTests(unittest.TestCase):
    def test_addition(self):
        result = 2 + 3
        self.assertEqual(result, 5)

    def test_subtraction(self):
        result = 5 - 3
        self.assertEqual(result, 2)

위의 예제에서는 test_addition 메서드와 test_subtraction 메서드를 만들었습니다. 각각 덧셈과 뺄셈 연산을 테스트하는 메서드입니다. self.assertEqual을 사용하여 예상 결과와 실제 결과를 비교하고, 테스트가 통과하는지 확인합니다.

unittest 테스트 실행하기

테스트 클래스를 작성하고 나면, unittest.main() 메서드를 호출해서 테스트를 실행할 수 있습니다. 이 메서드는 현재 파일에서 테스트 클래스를 검색하고, 테스트 메서드를 실행합니다.

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

위의 코드는 현재 파일이 직접 실행될 때만 테스트를 실행하도록 설정합니다. 이렇게 하면 해당 파일을 모듈로 임포트하는 경우에는 테스트가 실행되지 않습니다.

unittest 디버깅하기

unittest를 사용하여 테스트를 실행하면서 디버깅하기 위해서는 다음과 같은 방법을 사용할 수 있습니다.

  1. print 문을 사용하여 중간 결과를 출력합니다.
  2. pdb 모듈을 사용하여 디버깅 세션을 시작합니다.

pdb 모듈은 파이썬의 내장 디버거로, 테스트 중에 코드를 일시 중단하고 변수의 값을 확인하고 코드를 단계별로 실행할 수 있습니다. 예를 들어, pdb를 사용하여 test_addition 메서드를 디버깅하고 싶다면 다음과 같이 코드를 수정할 수 있습니다.

import unittest
import pdb

class CalculatorTests(unittest.TestCase):
    def test_addition(self):
        pdb.set_trace()  # 디버깅 세션을 시작
        result = 2 + 3
        self.assertEqual(result, 5)

위의 코드에서 pdb.set_trace() 문을 추가하여 디버깅 세션을 시작합니다. 이후에 코드가 이 문에 도달하면 디버거가 시작되고, 디버깅 모드에서 코드를 단계별로 실행하고 변수의 값을 확인할 수 있습니다.

결론

unittest 모듈을 사용하여 테스트를 작성하고 실행하는 방법을 알아보았습니다. 또한, 테스트 실행 중에 디버깅하는 방법도 살펴보았습니다. 테스트를 작성하고 실행하여 코드의 신뢰성을 높이고, 디버깅을 통해 문제를 해결하는 과정은 개발 과정에서 필수적인 부분입니다.