[파이썬] unittest 커스텀 assert 메서드 작성하기

Unittest는 Python에서 유닛테스트를 작성하고 실행하기 위한 표준 라이브러리입니다. 이 라이브러리에는 다양한 assert 메서드가 내장되어 있어서 테스트 결과를 확인할 수 있습니다. 그러나 때로는 기본 assert 메서드만으로는 테스트를 충분히 표현할 수 없는 경우가 있습니다. 이럴 때에는 우리가 직접 assert 메서드를 작성하여 사용할 수 있습니다.

이번 블로그 포스트에서는 Python의 Unittest를 사용하여 커스텀 assert 메서드를 작성해 보겠습니다. 이 메서드는 테스트 결과를 더 쉽게 읽고 이해할 수 있도록 도와줄 것입니다.

커스텀 assert 메서드 작성하기

Unittest에서 사용할 커스텀 assert 메서드를 작성하기 위해서는 다음과 같은 단계를 따릅니다:

  1. 새로운 테스트 케이스 클래스를 작성합니다.
  2. assert 메서드를 작성하고 테스트 케이스 클래스에 추가합니다.
  3. assert 메서드를 사용하여 테스트 케이스를 작성합니다.

아래는 간단한 예제 코드입니다.

import unittest

class CustomAssertTestCase(unittest.TestCase):
    def assertGreaterOrEqualWithThreshold(self, first, second, threshold):
        self.assertGreaterEqual(first, second - threshold,
                                f"{first} is not greater than or equal to {second - threshold}")
    
    def test_custom_assert(self):
        a = 10
        b = 7
        threshold = 2
        self.assertGreaterOrEqualWithThreshold(a, b, threshold)

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

위의 코드에서는 assertGreaterOrEqualWithThreshold라는 커스텀 assert 메서드를 작성했습니다. 이 메서드는 assertGreaterEqual 메서드를 이용하여 첫 번째 인자가 두 번째 인자보다 크거나 같은지를 검증하면서, 추가로 threshold 값만큼 차이가 있어도 테스트가 통과하도록 합니다.

테스트 케이스 클래스인 CustomAssertTestCase에는 test_custom_assert라는 테스트 메서드가 추가되어 있습니다. 이 메서드에서는 커스텀 assert 메서드를 사용하여 a가 b보다 크거나 같다는 조건을 검증하고 있습니다.

실행 결과 확인하기

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

위의 결과에서 .은 테스트 케이스가 성공적으로 실행되었음을 나타냅니다. 이는 커스텀 assert 메서드가 제대로 작동하고 테스트 결과를 정확하게 평가했음을 의미합니다.

마무리

이번 블로그 포스트에서는 Python의 Unittest를 사용하여 커스텀 assert 메서드를 작성하는 방법에 대해 알아보았습니다. 커스텀 assert 메서드를 작성하면 테스트 코드를 더 읽기 쉽고 이해하기 쉽게 만들 수 있습니다. 이러한 커스텀 assert 메서드는 개발자가 테스트 결과를 빠르게 확인할 수 있도록 도와줍니다.