안녕하세요! 그레이 해커 월횽입니다. 오늘은 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)
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)
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를 통한 대규모 애플리케이션 개발에 필요한 팁과 최적화 방법을 다루겠습니다.
- 이전 수업 목록
'프로그래밍 > Python' 카테고리의 다른 글
[Python 강의] 34강 - Flask 애플리케이션의 성능 최적화와 보안 강화 기법 (1) | 2024.11.14 |
---|---|
[Python 강의] 33강 - Flask 기반 RESTful API와 데이터베이스 연동 (0) | 2024.11.13 |
[Python 강의] 32강 - Flask 기반 RESTful API 구축과 활용 (0) | 2024.11.12 |
[Python 강의] 31강 - Flask로 만든 애플리케이션을 배포하고 최적화하는 방법 (1) | 2024.11.11 |
[Python 강의] 30강 - Flask와 프론트엔드 연동을 통한 완성도 높은 웹 애플리케이션 구축 (1) | 2024.11.08 |