[파이썬][Django] Django의 테스트 기능은 어떤것이 있을까? 예제 포함

Django는 테스트를 작성하고 실행하기 위한 다양한 기능을 제공합니다. 아래에서 몇 가지 주요한 Django 테스트 기능과 예제를 소개하겠습니다.

1. 단위 테스트 (Unit Tests)

단위 테스트는 개별 함수, 메서드 또는 클래스의 기능을 테스트하는 데 사용됩니다. Django에서는 unittest 또는 pytest를 사용하여 단위 테스트를 작성할 수 있습니다. 아래는 unittest를 사용한 예제입니다.

# myapp/tests.py

from django.test import TestCase
from .models import MyModel

class MyModelTestCase(TestCase):
    def setUp(self):
        self.obj = MyModel.objects.create(name="Test Object")

    def test_object_name(self):
        self.assertEqual(self.obj.name, "Test Object")

    def test_object_creation(self):
        self.assertIsInstance(self.obj, MyModel)

2. 기능 테스트 (Functional Tests)

기능 테스트는 애플리케이션의 기능을 테스트하고 사용자 시나리오를 검증하는 데 사용됩니다. Django에서는 Selenium과 같은 웹 자동화 도구와 함께 기능 테스트를 작성할 수 있습니다.

# functional_tests.py

from selenium import webdriver

class MySiteFunctionalTest(TestCase):
    def setUp(self):
        self.browser = webdriver.Chrome()
        self.browser.implicitly_wait(3)

    def tearDown(self):
        self.browser.quit()

    def test_can_visit_home_page(self):
        self.browser.get('http://localhost:8000')
        self.assertIn('My Site', self.browser.title)

3. API 테스트

Django REST framework를 사용하여 API를 개발한 경우, API 테스트도 간단하게 작성할 수 있습니다. APITestCase 클래스를 사용하여 API 요청을 테스트합니다.

# api/tests.py

from rest_framework.test import APITestCase
from rest_framework import status
from .models import MyModel

class MyModelAPITest(APITestCase):
    def setUp(self):
        self.obj = MyModel.objects.create(name="Test Object")

    def test_list_objects(self):
        response = self.client.get('/api/mymodels/')
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(len(response.data), 1)

    def test_create_object(self):
        data = {'name': 'New Object'}
        response = self.client.post('/api/mymodels/', data, format='json')
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

4. 테스트 실행

테스트를 실행하려면 Django의 manage.py 도구를 사용합니다. 아래는 테스트를 실행하는 명령어입니다.

python manage.py test myapp

위에서 myapp은 테스트할 앱의 이름입니다. Django는 tests.py 파일을 자동으로 찾아서 테스트를 실행합니다.

Django의 테스트 기능을 활용하면 애플리케이션의 다양한 부분을 효과적으로 테스트하여 안정성을 확보하고 개발자들이 변경사항을 자신있게 적용할 수 있도록 도움을 줍니다.