테스트 코드를 작성할 때 BaseTestCase 클래스를 별도로 작성하면 테스트 코드를 더 간편하게 관리할 수 있다. 예를 들어, setUp 메서드를 통해 초기 데이터를 생성하고, 여러 테스트에서 별도의 추가 작성 없이 재사용하는 것이다. 하지만 SimpleUploadedFile 사용한다면 이미지 포스팅 테스트를 작성할 때 다음과 같은 문제가 발생할 수 있다.BaseTestCase 클래스에서 setUp 메서드를 통해 이미지와 함께 게시글(Post)을 생성하고, 이를 PostTest 클래스의 테스트 메서드에서 재사용하려고 할 때, 새로운 포스팅 요청이 실패하며 에러가 발생한다.# response.data {'image': [ErrorDetail(string='제출한 파일이 비어있습니다.', code='em..
Django에서 기본적으로 제공하는 User 모델을 사용할 수 있지만, 프로젝트 요구사항에 따라 사용자 모델을 직접 커스터마이징해야 할 때가 있다.Django에서는 AbstractUser와 AbstractBaseUser라는 두 가지 추상 클래스를 통해 사용자 모델을 커스터마이징할 수 있다. AbstractUser는 기본적으로 제공되는 필드를 유지하면서 필요한 필드를 추가할 때 사용 가능하고,AbstractBaseUser는 사용자 모델을 완전히 새로 정의할 때 사용 가능하다.이 두 가지 클래스는 구체적으로 어떤 필드와 동작을 제공하는지 살펴보자. 사전 설정먼저 AbstractUser 나 AbstractBaseUser 클래스를 상속받아 생성한다면 settings.py를 변경해주어야 한다.# projectn..
테스트 드리븐 개발(TDD)은 요구사항을 명확히 하고 안정적인 코드를 작성하는 개발 방법이다.제일 먼저 예상되는 동작에 대한 테스트 코드를 작성하고, 구체적으로 기능을 구현하는 것이다.장고에서는 테스트 드리븐 개발(TDD)을 쉽게 할 수 있도록 지원하고 있다.기본적인 장고의 TDD 개발 과정에 대해 뷰 테스트를 예를 들어 설명하려 한다.1. 테스트 계획 및 작성요구사항을 정리하여 개발해야하는 기능을 계획한다.요구사항에 맞는 테스트 코드를 작성한다.장고에서는 TestCase 클래스를 상속받아 사용자 정의 테스트 코드를 작성할 수 있다.아래 코드는 도서 데이터를 가져오는 API를 테스트하는 예제이다.# api/test.pyfrom django.test import TestCasefrom rest_framew..
Docker를 이용해 동일한 환경에서 Django 프로젝트를 실습하고자 하는 경우, Docker Compose를 사용하면 쉽게 개발, 테스트, 배포 환경을 구성할 수 있다.PyCharm을 이용해 Django 프로젝트를 Docker Compose로 설정하는 방법을 단계별로 살펴보자.1. Docker Desktop 설치Docker Desktop을 설치한다.Windows 설치 방법은 이전 글인 [Docker] 도커 데스크탑 설치 (Docker Desktop in Windows)를 참고할 수 있다.2. 프로젝트 생성먼저 도커에서 실행할 Django 프로젝트 디렉토리가 필요하다.빈 디렉토리거나 기존에 작업 중인 프로젝트여도 상관없다.여기서는 djangoProject라는 빈 디렉토리를 사용하려고 한다.2. Dock..