본문 바로가기
Python/study

unittest 모듈

by 르면가게 2024. 12. 8.

Python unittest 모듈

Python의 unittest 모듈은 내장 단위 테스트 프레임워크로, 코드의 각 기능이 예상대로 동작하는지 확인하는 데 사용됩니다. 이 모듈을 통해 테스트 케이스 작성, 테스트 스위트 구성, 결과 요약이 가능합니다.


기본 사용법

  1. 테스트할 함수 또는 클래스 정의
    • 테스트 대상이 되는 코드를 작성합니다.
  2. unittest.TestCase를 상속받아 테스트 클래스 작성
    • 테스트 클래스는 unittest.TestCase를 상속해야 합니다.
  3. 테스트 메서드 작성
    • 테스트 메서드 이름은로 시작해야 합니다.
  4. 테스트 실행
    • python -m unittest 명령어를 통해 실행합니다.

예제 코드

테스트할 함수 정의

# 테스트할 함수
def add(x, y):
    return x + y

테스트 작성

import unittest

class TestAddFunction(unittest.TestCase):

    # 정수 덧셈 테스트
    def test_add_integers(self):
        self.assertEqual(add(1, 2), 3)  # 1 + 2 = 3

    # 실수 덧셈 테스트
    def test_add_floats(self):
        self.assertEqual(add(1.5, 2.5), 4.0)  # 1.5 + 2.5 = 4.0

    # 문자열 연결 테스트
    def test_add_strings(self):
        self.assertEqual(add('Hello ', 'World'), 'Hello World')  # 문자열 합치기

테스트 실행

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

주요 어서션 메서드

unittest는 다양한 Assertion Methods를 제공하여 테스트 조건을 확인할 수 있습니다.

메서드 설명

assertEqual(a, b) a == b인지 확인
assertNotEqual(a, b) a != b인지 확인
assertTrue(x) x가 True인지 확인
assertFalse(x) x가 False인지 확인
assertIs(a, b) a is b (동일 객체)인지 확인
assertIsNone(x) x가 None인지 확인
assertIn(a, b) a가 b에 포함되는지 확인
assertRaises(exc, ...) 예외 exc가 발생하는지 확인

setUp과 tearDown

  • setUp: 각 테스트 전에 실행됩니다.
  • tearDown: 각 테스트 후에 실행됩니다.
class TestExample(unittest.TestCase):
    def setUp(self):
        # 각 테스트 전에 실행
        self.data = [1, 2, 3]
        print("Setup 실행")

    def tearDown(self):
        # 각 테스트 후에 실행
        self.data = None
        print("Teardown 실행")

    def test_example(self):
        self.assertEqual(len(self.data), 3)

테스트 스위트 구성

테스트 스위트는 여러 개의 테스트 케이스를 묶어 한 번에 실행할 수 있는 구조입니다.

def suite():
    suite = unittest.TestSuite()
    suite.addTest(TestAddFunction('test_add_integers'))
    suite.addTest(TestAddFunction('test_add_floats'))
    return suite

if __name__ == '__main__':
    runner = unittest.TextTestRunner()
    runner.run(suite())

테스트 실행 방법

  1. 단일 파일 실행
  2. python -m unittest <test_file.py>
  3. 전체 디렉토리 테스트
    • 기본적으로 현재 디렉토리의 모든 test_*.py 파일을 찾아 실행합니다.
    • 특정 디렉토리 지정:
    • python -m unittest discover -s tests
  4. python -m unittest discover

모범 사례

  1. 테스트 메서드는 한 가지 기능만 테스트하도록 작성.
  2. 테스트 메서드의 이름은 기능을 명확히 표현.
  3. 테스트 커버리지를 높이기 위해 모든 edge case를 포함.
  4. setUp과 tearDown으로 반복 작업을 줄이고 코드 재사용성을 높임.

'Python > study' 카테고리의 다른 글

__init__  (0) 2025.02.19
@wrap  (0) 2025.01.15
@staticmethod  (0) 2024.12.08
ast.literal_eval()  (0) 2024.12.08
__str__와 __repr__  (0) 2024.12.08