[python] 파이썬 단위 테스트를 위한 CI/CD 파이프라인 구축 방법

소프트웨어 프로젝트에서 품질 관리는 매우 중요합니다. 특히, 파이썬으로 작성된 소프트웨어는 품질과 안정성을 위해 단위 테스트(Unit Test)가 필수적입니다. 이를 자동화하기 위해 CI/CD 파이프라인(Continuous Integration/Continuous Deployment Pipeline)을 구축하는 방법을 알아보겠습니다.

1. 단위 테스트 작성

우선, 소프트웨어의 각 기능에 대한 단위 테스트를 작성해야 합니다. 예를 들어, calculator.py 파일에 대한 단위 테스트를 작성한다고 가정해 봅시다.

# calculator_test.py

import unittest
from calculator import add, subtract

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

    def test_subtract(self):
        self.assertEqual(subtract(5, 3), 2)

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

2. CI/CD 파이프라인 설정

2.1. GitHub 저장소 설정

GitHub에 소스 코드를 저장하고, 저장소를 새로 만든 후 단위 테스트를 실행할 수 있는 CI 도구와 연동합니다.

2.2. CI 도구 설정

여러 CI 도구 중에서 Jenkins, Travis CI, CircleCI, GitLab CI 등을 활용할 수 있습니다. 간단한 예시로, GitHub Actions을 사용해 보겠습니다.

2.3. GitHub Actions Workflow 작성

# .github/workflows/python.yml

name: Python CI

on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Set up Python 3.x
      uses: actions/setup-python@v2
      with:
        python-version: 3.x
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt
    - name: Run unit tests
      run: python -m unittest discover

위의 GitHub Actions Workflow 파일은 GitHub 저장소 루트에 .github/workflows/python.yml로 저장됩니다. 이 Workflow는 코드가 푸시되거나 풀 리퀘스트가 생성될 때마다 파이썬 환경을 설정하고, 의존성을 설치한 후 단위 테스트를 수행합니다.

3. 파이프라인 실행 및 결과 확인

GitHub에 코드를 푸시하거나 풀 리퀘스트를 생성하여 파이프라인이 실행되고, 단위 테스트가 수행됩니다. 결과는 GitHub Actions의 웹 인터페이스나 로컬 환경에서 확인할 수 있습니다.

이로써 단위 테스트를 자동화하고, CI/CD 파이프라인을 통해 품질 관리를 보다 효과적으로 할 수 있습니다.

참고 자료