[python] 테스트 자동화를 위한 파이썬 스크립트 작성 팁

테스트 자동화는 개발 프로세스에서 매우 중요한 부분입니다. 파이썬은 이를 위한 강력한 도구와 라이브러리를 제공하며, 효율적이고 안정적인 테스트를 작성하는 것을 도와줍니다. 이번 포스트에서는 테스트 자동화를 위한 파이썬 스크립트 작성에 도움이 되는 몇 가지 팁을 소개하겠습니다.

1. 단위 테스트용 모듈 작성

파이썬에서 테스트를 작성할 때는 단위 테스트용 모듈을 작성하는 것이 일반적입니다. 이는 테스트를 쉽게 관리하고 실행할 수 있는 구조를 제공합니다. 단위 테스트용 모듈은 unittest 모듈을 활용하여 작성할 수 있으며, 테스트 케이스 클래스와 각 테스트 메서드를 정의하는 방식으로 구성됩니다.

import unittest

class MyTestCase(unittest.TestCase):
    def test_add(self):
        result = add(3, 5)
        self.assertEqual(result, 8)

    def test_subtract(self):
        result = subtract(10, 6)
        self.assertEqual(result, 4)

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

2. Mock 객체를 활용한 의존성 제어

테스트를 작성할 때는 종종 외부 의존성을 가진 코드를 다루어야 할 때가 있습니다. 이때 unittest.mock 모듈을 사용하여 Mock 객체를 생성하고 의존성을 제어할 수 있습니다. Mock 객체는 실제 객체와 유사한 동작을 가지며, 원하는 값을 반환하거나 특정 메서드를 호출한 것처럼 동작할 수 있습니다.

from unittest.mock import MagicMock

def test_fetch_data():
    mock_http_client = MagicMock()
    mock_http_client.get.return_value = '{"result": "success"}'
    service = MyService(mock_http_client)
    result = service.fetch_data()
    assert result == '{"result": "success"}'
    mock_http_client.get.assert_called_once()

3. 파라미터화된 테스트 케이스 작성

동일한 코드에 대해 다양한 입력값을 테스트하고 싶을 때는 파라미터화된 테스트 케이스를 작성할 수 있습니다. 파이썬에서는 unittest 모듈의 TestCase 클래스에서 @unittest.parameterized.parameterized.expand 데코레이터를 활용하여 파라미터화된 테스트를 작성할 수 있습니다.

import unittest
from parameterized import parameterized

class MyTestCase(unittest.TestCase):
    @parameterized.expand([
        (1, 2, 3),
        (4, 5, 9),
        (10, 20, 30)
    ])
    def test_add(self, a, b, expected):
        result = add(a, b)
        self.assertEqual(result, expected)

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

4. 코드 커버리지 확인하기

테스트를 작성할 때는 코드의 커버리지를 체크하는 것이 좋습니다. 이를 위해 coverage 패키지를 사용할 수 있습니다. coverage 패키지는 코드를 실행하고 어떤 부분이 테스트되었는지를 확인할 수 있는 보고서를 생성해줍니다.

pip install coverage
coverage run my_tests.py
coverage report -m

5. CI/CD 파이프라인에 테스트 자동화 통합

테스트 자동화는 CI/CD 파이프라인에서 중요한 역할을 합니다. 파이썬의 다양한 CI/CD 도구와 플러그인들을 활용하여 테스트 자동화를 파이프라인에 통합할 수 있습니다. 예를 들어, Jenkins, Travis CI, CircleCI, GitHub Actions 등을 활용할 수 있습니다.

위의 팁들을 활용하여 효율적이고 안정적인 테스트 자동화를 위한 파이썬 스크립트를 작성해보세요!


참고 문서: