Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python unittest 모듈을 활용한 자동화 소프트웨어 테스트 완벽 가이드

코드를 작성한 후에는 다양한 입력값을 넣어가며 코드가 의도대로 작동하는지 반드시 확인해야 합니다. 이 과정을 테스트(testing)라고 부르며, 수동으로 진행할 수도 있고 자동으로 진행할 수도 있습니다.

수동 테스트는 매번 직접 입력값을 넣고 결과를 확인해야 하기 때문에 시간이 많이 걸리고 실수도 잦습니다. 반면 자동화 테스트는 한 번 작성해 두면 언제든 반복 실행할 수 있어 개발 생산성을 크게 높여 줍니다. 이번 튜토리얼에서는 Python의 대표적인 테스트 프레임워크인 unittest 모듈을 사용해 자동화 테스트를 구현하는 방법을 알아보겠습니다.

unittest 모듈이란?

Python에는 코드를 자동으로 테스트하기 위한 unittest라는 내장 모듈이 포함되어 있습니다. 별도의 설치 없이 바로 사용할 수 있으며, 문법이 단순해서 초보자도 쉽게 시작할 수 있다는 장점이 있습니다.

unittest를 사용할 때 기억해야 할 핵심 규칙은 다음과 같습니다.

  • 테스트 클래스는 unittest.TestCase를 상속받아야 합니다.
  • 테스트하려는 메서드 이름은 반드시 test로 시작해야 합니다.

기본 예제

가장 간단한 형태의 테스트 코드부터 살펴보겠습니다.

# unittest 모듈 가져오기
import unittest

class SampleTest(unittest.TestCase):
    # True 또는 False 반환
    def test(self):
        self.assertTrue(True)

# 테스트 실행
unittest.main()

실행 결과

Ran 1 test in 0.001s
OK

위 프로그램을 실행하면 총 1개의 테스트가 실행되었으며 모두 통과했다는 의미의 OK 메시지가 출력됩니다.

문자열 메서드 테스트하기

이번에는 실제 문자열 메서드들을 다양한 테스트 케이스로 검증해 보겠습니다. 메서드 이름이 반드시 test로 시작한다는 점을 다시 한번 기억하세요.

# unittest 모듈 가져오기
import unittest

class TestingStringMethods(unittest.TestCase):
    # 문자열 동등성 비교
    def test_string_equality(self):
        # 두 인자가 같으면 성공
        self.assertEqual('ttp' * 5, 'ttpttpttpttpttp')

    # 두 문자열 비교
    def test_string_case(self):
        # 두 인자가 같으면 성공
        self.assertEqual('tutorialspoint'.upper(), 'TUTORIALSPOINT')

    # 문자열이 대문자인지 확인
    def test_is_string_upper(self):
        # 조건이 참인지 거짓인지 확인
        self.assertTrue('TUTORIALSPOINT'.isupper())
        self.assertFalse('TUTORIALSpoint'.isupper())

# 테스트 실행
unittest.main()

실행 결과

Ran 3 tests in 0.001s
OK

3개의 테스트 메서드가 모두 정상적으로 통과했습니다. 여기서 사용된 주요 어설션(assertion) 메서드는 다음과 같습니다.

  • assertEqual(a, b): a와 b가 같은지 확인합니다.
  • assertTrue(x): x가 참(True)인지 확인합니다.
  • assertFalse(x): x가 거짓(False)인지 확인합니다.

마무리

자동화 테스트를 활용하면 코드 수정 후에도 기능이 정상적으로 작동하는지 빠르게 검증할 수 있어 개발 시간을 크게 절약할 수 있습니다. 처음에는 간단한 테스트부터 시작해 프로젝트 규모가 커질수록 테스트 케이스를 함께 확장해 나가는 것이 좋습니다. 튜토리얼 내용 중 궁금한 점이 있다면 댓글로 남겨 주세요.