국회도서관 자료검색 서비스

django Test 코드 작성하여 코드 안정성 높이기 #11

유니네 라이브러리 2024. 8. 12. 10:35

Django 프로젝트에서 API의 안정성을 보장하려면 테스트 코드가 필수이다.

이 글에서는 Django의 TestCase를 활용하여 API 호출 테스트 코드 작성 방법을 설명한다.

 

✅ API 테스트 코드 작성 시 유의사항

 

테스트 파일 위치: django의 APP 디렉터리(test.py)에 작성

테스트 자동 탐색: test_로 시작하는 함수명을 사용해야 함

테스트 데이터 관리: 임시 데이터로 진행되며, 실제 데이터베이스에는 저장되지 않음

 

✅ test.py에서 API 테스트 코드 작성

 

test.py 파일을 생성하고 아래와 같이 코드를 작성한다.

from django.test import TestCase
from django.urls import reverse

class APIsTest(TestCase):
    """ API 호출 테스트 """

    def test_nanet_search(self):
        """ 국회도서관 검색 API 테스트 """
        
        # 테스트 파라미터
        data = {
            "search": "수호지",
            "pageno": 1,
            "displaylines": 10
        }
        
        # API URL
        url = reverse('nanet-main')
        
        # API 호출
        response = self.client.get(url, data)
        
        # 응답 코드 검증
        self.assertEqual(response.status_code, 200, "응답 코드가 200이 아닙니다.")

 

📌 설명

TestCase를 상속받아 테스트 클래스 생성

reverse('nanet-main')으로 URL 설정

self.client.get(url, data)로 API 호출

assertEqual(response.status_code, 200)을 사용해 응답 코드 검증

 

✅ 테스트 실행하기

 

📍 1. 가상환경 활성화

 

터미널에서 Django 프로젝트의 가상환경을 활성화한다.

  • 가상환경에 진입
  • python3 manage.py test 로 테스트 실행

📍 2. 테스트 실행

 

아래 명령어를 입력하면 모든 테스트가 실행된다.

  • python3 manage.py test

📌 실행 결과 예시

"""
테스트 실행
가상환경에 진입하고
명령어 python3 manage.py test 로 테스트 실행
"""
(pubd_api) pubdapi % ls
db.sqlite3	manage.py	pubdapi		pubdapp
(pubd_api) pubdapi % python3 manage.py test                       
Found 1 test(s).
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
.
----------------------------------------------------------------------
Ran 1 test in 0.172s

OK
Destroying test database for alias 'default'...
(pubd_api) pubdapi %

테스트가 정상적으로 통과됨을 확인할 수 있다! 🎉

 

✅ 특정 테스트 클래스만 실행하는 방법

 

특정 클래스만 테스트하고 싶다면, 앱명.tests.클래스명을 지정하여 실행한다.

  • python3 manage.py test pubdapp.tests.APIsTest

📌 실행 결과 예시

"""
특정 클래스만 실행시키고 싶은 경우 (앱.tests.class명 지정)
예시코드 python3 manage.py test pubdapp.tests.APIsTest
"""
(pubd_api) pubdapi % python3 manage.py test pubdapp.tests.APIsTest
Found 1 test(s).
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
.
----------------------------------------------------------------------
Ran 1 test in 0.299s

OK
Destroying test database for alias 'default'...
(pubd_api) pubdapi %

✅ 특정 클래스의 테스트만 실행되었으며, 테스트가 정상적으로 통과되었다.

 

✅ 마무리

 

이제 Django의 국회도서관 자료검색 API 테스트 코드가 완성되었다.

Django 프로젝트의 테스트 자동화를 통해 더 안정적인 API 개발을 진행할 수 있다! 🚀

 

📌 다음 글 예고

다음 단계에서는 Vue.js에서 API를 호출하고, 데이터를 화면에 출력하는 페이지를 다뤄본다.