유닛 테스트는 프로젝트에서 중요한 역할을 한다. 각 기능이 올바르게 동작하는지 확인하고, 코드의 변경이 기존 기능에 부정적은 영향을 미치진 않았는지 학인 및 기존 코드의 동작을 보장해 준다. 일반적으로 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 |