[파이썬] unittest 메서드와 함수 테스트의 차이점

파이썬에서 단위 테스트는 코드의 정확성과 동작을 검증하는 데 중요한 역할을 합니다. unittest는 파이썬에서 제공하는 기본 테스트 프레임워크로, 클래스 단위의 테스트를 진행할 수 있습니다. 이와 달리 함수 테스트는 각 함수마다 개별적으로 테스트를 수행하는 방식입니다. 이 블로그 포스트에서는 unittest 메서드와 함수 테스트 사이의 주요 차이점에 대해 살펴보겠습니다.

unittest 메서드

unittest 메서드는 보통 테스트할 클래스 내에 작성되며, 테스트할 메서드마다 테스트 케이스를 정의해주어야 합니다. unittest 메서드는 다음과 같은 특징을 가지고 있습니다.

  1. TestCase 클래스: unittest.TestCase 클래스를 상속받아 테스트를 정의합니다.
  2. 메서드 단위 테스트: 각 테스트 메서드는 test_로 시작해야하며, 예상되는 결과와 실제 결과를 비교하여 테스트를 수행합니다.
  3. 세팅 및 정리 메서드: setUp()과 tearDown() 메서드를 사용하여 테스트 전후에 필요한 세팅과 정리 작업을 수행할 수 있습니다.
  4. TestRunner: unittest 테스트 케이스를 실행하고 결과를 보고하는 기능을 제공합니다.

다음은 unittest 메서드를 사용한 예제입니다.

import unittest

class CalculatorTests(unittest.TestCase):
    def setUp(self):
        self.calculator = Calculator()

    def test_add(self):
        result = self.calculator.add(2, 3)
        self.assertEqual(result, 5)

    def test_subtract(self):
        result = self.calculator.subtract(5, 3)
        self.assertEqual(result, 2)

    def tearDown(self):
        del self.calculator

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

함수 테스트

함수 테스트는 단위 테스트를 함수 단위로 진행하는 방식입니다. unittest 메서드와 다르게 클래스를 사용하지 않고도 테스트를 수행할 수 있습니다. 함수 테스트의 주요 특징은 다음과 같습니다.

  1. 독립적인 테스트: 각 함수마다 테스트를 독립적으로 수행하므로, 테스트 간의 상호작용이 없습니다.
  2. 트레이드오프: 클래스 내부의 상태를 공유하는 경우는 없지만, 반면에 코드의 재사용성이 떨어질 수 있습니다.
  3. 애니메이션: 테스트 코드를 작성하고 실행하는 데에 보다 빠른 반응을 얻을 수 있습니다.

다음은 함수 테스트를 사용한 예제입니다.

def test_add():
    calculator = Calculator()
    result = calculator.add(2, 3)
    assert result == 5

def test_subtract():
    calculator = Calculator()
    result = calculator.subtract(5, 3)
    assert result == 2

if __name__ == '__main__':
    test_add()
    test_subtract()

결론

unittest 메서드는 클래스 단위의 테스트에 적합하며, 각 테스트 메서드마다 정의된 순서대로 실행됩니다. 테스트 케이스 간의 상호작용과 공유된 상태가 있는 경우에 유용합니다.

반면에 함수 테스트는 클래스를 사용하지 않고도 함수 단위로 테스트할 수 있으며, 각 테스트가 독립적으로 실행됩니다. 더 빠른 반응과 더 적은 코드 리소스의 트레이드오프를 갖습니다.

테스트 방법은 개발자의 선호도와 프로젝트의 특성에 따라 다를 수 있으니, 상황에 맞게 적절한 테스트 방법을 선택해야 합니다.