데이터 사이언스/python

[Python] 단위 테스트(Unit Test)

devim 2023. 6. 13. 11:47

파일 이름

유닛 테스트 파일의 이름을 짓는 데에는 일반적으로 다음과 같은 규칙이 사용됩니다:

1. 테스트 대상 파일의 이름을 기반으로 합니다: 테스트하려는 모듈 또는 클래스의 이름을 포함하여 테스트 파일의 이름을 지을 수 있습니다.

2. `test_` 접두사를 사용합니다: 테스트 파일을 식별하기 위해 파일 이름 앞에 `test_` 접두사를 추가합니다.

3. 밑줄(underscore)을 사용하여 가독성을 높입니다: 필요한 경우 단어 사이에 밑줄을 사용하여 가독성을 높일 수 있습니다.

4. `.py` 확장자를 사용합니다: 테스트 파일은 파이썬 소스 코드 파일이므로, `.py` 확장자를 사용합니다.

일반적으로 테스트 파일의 이름은 다음과 같은 형식을 따릅니다: `test_<module_or_class_name>.py`

예를 들어, `calculator.py` 모듈에 대한 유닛 테스트 파일을 작성할 때, 테스트 파일의 이름은 `test_calculator.py`로 지을 수 있습니다. 또는 `Calculator` 클래스의 유닛 테스트 파일의 이름은 `test_calculator.py`로 지을 수도 있습니다.

이와 같은 네이밍 규칙을 따르면 테스트 파일을 찾고 구분하기 쉽습니다. 또한, 테스트 대상 파일과 관련된 테스트 파일을 그룹화하고 테스트 스위트를 구성하는 데 도움이 됩니다.

 

예제 

아래는 간단한 예시로서 `unittest` 모듈을 사용한 파이썬 유닛 테스트의 예입니다:

import unittest

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

# 유닛 테스트 클래스
class TestAddNumbers(unittest.TestCase):

    def test_add_numbers(self):
        result = add_numbers(2, 3)
        self.assertEqual(result, 5)  # 기대값과 실제값 비교

    def test_add_numbers_negative(self):
        result = add_numbers(-2, 3)
        self.assertEqual(result, 1)  # 기대값과 실제값 비교

    def test_add_numbers_zero(self):
        result = add_numbers(0, 0)
        self.assertEqual(result, 0)  # 기대값과 실제값 비교

# 실행
if __name__ == '__main__':
    unittest.main()


위의 예시에서 `add_numbers` 함수를 테스트하기 위해 `unittest.TestCase`를 상속하는 `TestAddNumbers` 클래스를 정의하였습니다. 각각의 테스트는 `test_` 접두사로 시작하는 메서드로 구현되며, `assertEqual()` 메서드를 사용하여 기대값과 실제값을 비교합니다.

`unittest.main()`을 실행함으로써 유닛 테스트를 실행할 수 있습니다. 이렇게 실행하면 각 테스트 메서드가 실행되고, 테스트 결과가 출력됩니다.

추가로, `setUp()` 메서드와 `tearDown()` 메서드를 사용하여 각 테스트 전/후에 필요한 설정 또는 정리 작업을 수행할 수도 있습니다.