프로그래밍/Python

[Python 강의] 35강 - Flask 애플리케이션의 확장성과 테스트 방법

월횽 2024. 11. 15. 06:30
728x90
반응형
SMALL

안녕하세요! 그레이 해커 월횽입니다. 오늘은 Flask 애플리케이션의 확장성을 확보하는 방법과 테스트 기법을 학습해 보겠습니다. 이 강의를 통해 앱을 더욱 체계적이고 견고하게 관리할 수 있는 기초를 다지실 수 있습니다.

 

1. Flask 애플리케이션 확장성

 

1-1. Blueprint 사용으로 모듈화

· Blueprint를 사용하면 애플리케이션을 여러 모듈로 분리하여 코드 구조를 간결하게 만들 수 있습니다.

from flask import Blueprint

user_bp = Blueprint('user', __name__)

@user_bp.route('/profile')
def profile():
    return "User Profile Page"

· Blueprint 등록

from user import user_bp

app.register_blueprint(user_bp, url_prefix='/user')

 

1-2. 환경 구성 분리

애플리케이션의 개발, 테스트, 운영 환경에 따라 구성을 분리하여 각각의 설정을 관리할 수 있습니다. Flask-Config를 사용해 각 환경에 따라 로드할 구성을 다르게 설정합니다.

class Config:
    DEBUG = False
    TESTING = False

class ProductionConfig(Config):
    DATABASE_URI = 'sqlite:///production.db'

class DevelopmentConfig(Config):
    DEBUG = True
    DATABASE_URI = 'sqlite:///dev.db'

 

1-3. ORM과 마이그레이션

SQLAlchemy와 Flask-Migrate를 사용하여 데이터베이스 구조를 자동으로 변경하는 마이그레이션을 진행할 수 있습니다.

pip install Flask-Migrate
반응형
from flask_migrate import Migrate

migrate = Migrate(app, db)

 

 

2. Flask 애플리케이션 테스트 기법

 

2-1. 단위 테스트(Unit Testing)

단위 테스트는 작은 기능 단위로 정확성을 검증하는 방식입니다. Flask에서는 unittest를 통해 앱의 개별 기능을 테스트합니다.

import unittest
from app import app

class BasicTestCase(unittest.TestCase):
    def test_home_page(self):
        tester = app.test_client(self)
        response = tester.get('/')
        self.assertEqual(response.status_code, 200)
728x90
python -m unittest test_app.py

 

 

2-2. 통합 테스트(Integration Testing)

여러 모듈이 함께 작동하는지 확인하는 테스트 방식으로, 데이터베이스와 실제 API 호출을 포함하여 실행합니다.

import unittest
from app import app, db

class IntegrationTestCase(unittest.TestCase):
    def setUp(self):
        self.app = app.test_client()
        db.create_all()

    def tearDown(self):
        db.session.remove()
        db.drop_all()

    def test_user_registration(self):
        response = self.app.post('/register', data=dict(username='testuser', password='password'))
        self.assertEqual(response.status_code, 200)

 

SMALL

2-3. 테스트 자동화와 지속적 통합(CI)

GitHub Actions나 Jenkins와 같은 CI 도구를 사용해 코드 변경 시 자동으로 테스트가 수행되도록 설정합니다.

name: Flask CI

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up Python
        uses: actions/setup-python@v2
        with:
          python-version: '3.8'
      - name: Install dependencies
        run: |
          pip install -r requirements.txt
      - name: Run tests
        run: |
          python -m unittest

 

오늘은 Flask 애플리케이션의 확장성과 테스트에 대해 알아보았습니다. 다음 강의에서는 Flask를 통한 대규모 애플리케이션 개발에 필요한 팁과 최적화 방법을 다루겠습니다.

 

 

 

 

 

- 이전 수업 목록

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형
LIST