[python] Peewee에서 테스트 작성하기

테스트는 소프트웨어 개발에서 필수적인 요소입니다. 테스트를 통해 코드의 동작을 검증하고 버그를 찾아내는데 도움을 줍니다. 이번에는 Python의 ORM(Object-Relational Mapping) 라이브러리인 Peewee를 사용하여 테스트를 작성하는 방법에 대해 알아보겠습니다.

1. 테스트 환경 설정

먼저, 테스트를 작성하기 위해 테스트 환경을 설정해야 합니다. 일반적으로 가상 환경을 사용하여 의존성을 격리하고 프로젝트의 다른 부분에 영향을 미치지 않는 것이 좋습니다. 따라서, 가상 환경을 생성하고 Peewee를 설치해야 합니다.

$ python -m venv myenv
$ source myenv/bin/activate
$ pip install peewee

2. 모델 작성

Peewee를 사용하여 데이터베이스 모델을 만들어야 합니다. 예를 들어, User 모델을 작성해보겠습니다.

from peewee import *

db = SqliteDatabase('mydatabase.db')

class User(Model):
    username = CharField(unique=True)
    email = CharField(unique=True)

    class Meta:
        database = db
        table_name = 'users'

db.connect()
db.create_tables([User])

위 코드에서는 User라는 모델을 만들고 usernameemail 필드를 정의했습니다. Meta 클래스를 사용하여 데이터베이스 연결과 테이블 이름을 설정했습니다. 마지막으로 데이터베이스에 연결하고 User 테이블을 생성했습니다.

3. 테스트 작성

이제 테스트를 작성해보겠습니다. 일반적으로는 테스트를 작성하기 전에 테스트용 데이터베이스를 생성하고 초기 데이터를 삽입하는 것이 좋습니다. 테스트가 완료된 후에는 테스트 데이터베이스를 삭제하는 것이 좋습니다.

import unittest
from peewee import *

db = SqliteDatabase('test_database.db')

class TestUser(unittest.TestCase):

    def setUp(self):
        db.connect()
        db.create_tables([User])
        self.user = User.create(username="testuser", email="test@example.com")

    def tearDown(self):
        self.user.delete_instance()
        db.drop_tables([User])
        db.close()

    def test_user_attributes(self):
        self.assertEqual(self.user.username, "testuser")
        self.assertEqual(self.user.email, "test@example.com")
        
    def test_user_creation(self):
        new_user = User.create(username="newuser", email="new@example.com")
        self.assertEqual(User.select().count(), 2)
        self.assertEqual(new_user.username, "newuser")
        self.assertEqual(new_user.email, "new@example.com")

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

위 코드에서는 unittest 모듈을 사용하여 테스트를 작성했습니다. setUp 메서드에서는 테스트용 데이터베이스를 생성하고 초기 데이터를 삽입합니다. tearDown 메서드에서는 테스트 데이터베이스를 삭제합니다. test_user_attributes 메서드에서는 사용자의 속성을 테스트하고, test_user_creation 메서드에서는 새로운 사용자를 생성하는지 테스트합니다.

4. 테스트 실행

테스트를 실행하려면 다음 명령을 실행하면 됩니다.

$ python -m unittest mytest.py

위 명령을 실행하면 테스트 결과가 출력됩니다. 테스트가 성공인 경우는 ‘.’으로 표시되고, 실패인 경우는 ‘F’로 표시됩니다.

결론

이렇게 Peewee를 사용하여 테스트를 작성할 수 있습니다. 테스트를 통해 코드의 동작을 검증하고 버그를 찾아내는데 도움을 받을 수 있습니다. 테스트 작성은 소프트웨어 개발의 중요한 부분이므로 꼭 고려해야 합니다.


Peewee 공식 문서