[TEST] 테스트 DB 없이 Django에서 유닛 테스트 수행하기

2024. 5. 14. 13:45· Django/DRF
목차
  1. TEST DB를 사용하지 않았을 때의 장점
  2. 설정
  3. test_settings.py
  4. test_runner.py
  5. 실행
반응형

유닛 테스트는 프로젝트에서 중요한 역할을 한다. 각 기능이 올바르게 동작하는지 확인하고, 코드의 변경이 기존 기능에 부정적은 영향을 미치진 않았는지 학인 및 기존 코드의 동작을 보장해 준다. 일반적으로 Django의 유닛 테스트는 별도의 테스트 데이터 베이스를 사용하여 진행되지만 개인적으로 불편하고 데이터 베이스 없이 테스트를 수행하는 것이 더 효율적일 수도 있다는 이야기가 있어서 진행해 보았다.

 

 

TEST DB를 사용하지 않았을 때의 장점

속도 향상 - 데이터베이스 없이 테스트를 실행하면 테스트 속도가 향상된다.

환경 구성 단순화 - 별도의 데이터베이스 구성이 필요 없어, 테스트 환경을 쉽게 설정할 수 있다.

데이터 베이스의 독립성 - 데이터베이스 의존성 없이 테스트를 구성함으로써 독립적인 단위 효과를 효과적으로 검증할 수 있다.

 

 

설정

우선 settings.py와 동일한 위치에 test_settings.py와 test_runner.py를 추가해 주었다.

간단히 설명하자면, test_settings는 로컬환경과 배포 환경에 따라 local_settings와 pro_settings를 나누듯 테스트 환경도 나누어 준 것이다. test_runner는 테스트 DB를 만들지 않고 내가 설정한 DB로 테스트를 할 수 있게 해주는 것이다.

 

test_settings.py

나는 local_settings라는 로컬환경 세팅 파일이 따로 있어 아래처럼 진행하였다. 

from .local_settings import *

TEST_RUNNER = "obab_server.settings.test_runner.TestRunner"

 

test_runner.py

여기서 teardown_databases 함수의 파라미터로 꼭 old_config를 추가해야 된다.

from django.test.runner import DiscoverRunner

class TestRunner(DiscoverRunner):

    def setup_databases(self, **kwargs):
        pass

    def teardown_databases(self, old_config, **kwargs):
        pass

 

실행

기존에는 python manage.py test 사용해도 잘 진행되었지만 setting파일을 변경해 주었기 때문에 아래처럼 입력해 주어야 한다.

python manage.py test --settings={test_settings파일 경로} --verbosity=2
반응형
저작자표시 (새창열림)

'Django > DRF' 카테고리의 다른 글

[Custom] Django와 CustomJWT로 안전한 인증 시스템 구축하기  (0) 2024.05.23
[Custom] Django와 DRF에서 커스텀 예외처리하기(custom_exception)  (0) 2024.05.16
[CORS] DRF에서 CORS 문제 해결 및 테스트 방법  (0) 2024.05.14
[Custom] DRF Custom exception fomat (exception_handler)  (0) 2024.05.02
[Custom] DRF Custom Response fomat (Response)  (1) 2024.05.01
  1. TEST DB를 사용하지 않았을 때의 장점
  2. 설정
  3. test_settings.py
  4. test_runner.py
  5. 실행
'Django/DRF' 카테고리의 다른 글
  • [Custom] Django와 CustomJWT로 안전한 인증 시스템 구축하기
  • [Custom] Django와 DRF에서 커스텀 예외처리하기(custom_exception)
  • [CORS] DRF에서 CORS 문제 해결 및 테스트 방법
  • [Custom] DRF Custom exception fomat (exception_handler)
Jong_seoung
Jong_seoung
기록하자, 머리는 생각하는 곳이지 저장장치가 아니다.
반응형
Jong_seoung
Today_developStory
Jong_seoung
전체
오늘
어제

블로그 메뉴

  • Home
  • Git Hub
  • 분류 전체보기 (351)
    • Theory (16)
    • Java (3)
      • 알고리즘 (2)
      • 문법 (0)
    • Spring (7)
      • 스프링 입문 (6)
      • PickTalk (0)
      • 에러처리 (1)
    • Python (80)
      • 알고리즘 - 이론 (17)
      • 알고리즘 - 내장함수, 라이브러리 등등 (3)
      • 알고리즘 - 백준 (53)
      • 나도코딩 정리 (2)
      • 기타 (5)
    • Django (159)
      • DRF (105)
      • 인프라 (46)
      • DataBases (2)
      • API Docs (6)
    • FrontEnd (22)
      • htmx (2)
      • React (8)
      • 자바스크립트 (12)
    • GIT (16)
    • 기타 (8)
      • 정리 (2)
      • Flutter (1)
      • 마이크로프로세서 - ATmega128 (2)
      • 개발환경 세팅 (3)
    • 자격증 (37)
      • 정보처리기사 (19)
      • SQLD자격증 (18)

인기 글

최근 글

태그

  • alarm
  • BFS
  • CSRF
  • Django
  • django channels
  • django sse
  • django tutorial
  • django 배포
  • django 스웨거 적용
  • Django 이미지 저장

최근 댓글

hELLO · Designed By 정상우.v4.3.0
Jong_seoung
[TEST] 테스트 DB 없이 Django에서 유닛 테스트 수행하기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.