테스트 코드의 작성과 유지는 소프트웨어 개발 과정에서 매우 중요한 부분입니다. 테스트 코드는 다음과 같은 여러 가지 중요한 이점을 제공합니다:
버그 조기 발견: 테스트 코드는 개발 과정에서 버그를 조기에 발견하고 수정하는 데 도움을 줍니다. 이는 장기적으로 시간과 비용을 절약할 수 있게 해줍니다.
코드 품질 향상: 정기적인 테스트를 통해 코드의 품질을 높이고, 이로 인해 더 안정적이고 신뢰할 수 있는 소프트웨어를 개발할 수 있습니다.
리팩토링의 용이성: 테스트 코드가 있으면 코드를 리팩토링하거나 기능을 추가하는 과정에서 기존 기능이 예상대로 작동하는지 쉽게 확인할 수 있습니다.
문서화의 역할: 테스트 코드는 어떻게 코드가 사용되어야 하는지에 대한 예시이자 문서의 역할을 합니다. 새로운 개발자가 프로젝트에 참여할 때 테스트 코드를 통해 빠르게 시스템을 이해할 수 있습니다
지속적인 통합 및 배포(CI/CD) 지원: 자동화된 테스트는 지속적인 통합 및 배포 파이프라인의 핵심 요소입니다. 테스트가 자동화되어 있으면 코드 변경 사항이 기존 시스템과 잘 통합되는지 즉시 확인할 수 있습니다.
테스트 코드 작성: FastAPI 애플리케이션에 대한 테스트를 작성합니다.
GitHub Actions 설정: 푸시(push) 또는 풀 리퀘스트(pull request)가 발생할 때마다 테스트를 실행하고, 테스트가 통과하면 자동으로 배포하는 GitHub Actions 워크플로우를 설정합니다.
FastAPI 애플리케이션에 대한 간단한 테스트를 작성합니다. 예를 들어, test_main.py
파일을 만들고 다음과 같이 작성할 수 있습니다:
pythonCopy code
from fastapi.testclient import TestClient
from main import app
client = TestClient(app)
def test_read_main():
response = client.get("/items/1")
assert response.status_code == 200
assert response.json() == {"detail": "Item not found"}
이 코드는 FastAPI 애플리케이션의 /items/1
엔드포인트에 대한 테스트를 포함합니다.
GitHub 리포지토리의 .github/workflows
디렉토리에 워크플로우 파일을 생성합니다. 예를 들어, ci.yml
파일을 다음과 같이 작성할 수 있습니다:
name: Python application
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Test with pytest
run: |
pytest
이 워크플로우는 메인(main) 브랜치에 푸시하거나 풀 리퀘스트를 생성할 때마다 다음 작업을 수행합니다:
requirements.txt
참조).pytest
를 사용하여 테스트를 실행합니다.