테스트 주도 개발(Test-Driven Development, TDD)은 소프트웨어 개발 방법론 중 하나로, 개발자가 먼저 테스트 코드를 작성하고, 그 후에 그에 맞는 실제 코드를 작성하는 방식입니다. 이를 통해 코드 품질을 높이고 유지보수의 용이성을 높일 수 있습니다.
Peewee는 Python으로 작성된 간단하고 가벼운 ORM(Object-Relational Mapping) 도구입니다. 테스트 주도 개발에 Peewee를 활용하여 데이터베이스와의 상호작용을 테스트할 수 있습니다.
테스트 환경 설정
가상환경을 설정한 후, 필요한 패키지를 설치하세요:
pip install peewee pytest
모델과 테스트 작성
간단한 도서 관리 애플리케이션을 만들어보겠습니다. Book
이라는 모델을 정의하고, 해당 모델을 테스트하는 코드를 작성해봅시다. 아래와 같이 작성하세요:
from peewee import *
db = SqliteDatabase(':memory:')
class Book(Model):
title = CharField()
author = CharField()
class Meta:
database = db
def test_create_book():
with db.bind_ctx([Book]):
db.create_tables([Book])
book = Book.create(title="Harry Potter", author="J.K. Rowling")
assert book.title == "Harry Potter"
assert book.author == "J.K. Rowling"
위 코드에서 Book
클래스는 Peewee의 Model
을 상속받습니다. title
과 author
는 각각 CharField
로 정의된 필드입니다. Meta
클래스에서 데이터베이스 연결을 위한 database
설정을 명시하였습니다.
test_create_book
함수에서는 데이터베이스와 테이블을 생성한 후, Book
모델을 통해 새로운 도서를 생성하며, 생성된 도서의 title
과 author
를 검증하는 테스트를 작성하였습니다.
테스트 실행
터미널에서 아래와 같이 테스트를 실행하세요:
pytest -v
예상대로 실행되면, 결과는 아래와 유사한 형태일 것입니다:
============================= test session starts ==============================
...
collected 1 item
test_book.py::test_create_book PASSED [100%]
============================== 1 passed in 0.15s ===============================
결론
Peewee를 사용하여 테스트 주도 개발 방식으로 코드를 작성하면 데이터베이스와 상호작용하는 코드의 품질과 신뢰성을 높일 수 있습니다. 테스트 케이스를 작성함으로써 코드를 더 나은 상태로 유지하기 쉽고, 버그 수정 및 확장을 보다 안전하게 진행할 수 있습니다.
참고: Peewee 공식 문서