[django | TDD] Build a Backend REST API - 7

Hyeseong·2021년 2월 25일
0

Before Beginning🎶

TDD🤔

테스트 주도 개발(Test-driven development TDD): 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스 중 하나이다.

개발자는 먼저 요구사항을 검증하는 자동화된 테스트 케이스를 작성한다. 그런 후에, 그 테스트 케이스를 통과하기 위한 최소한의 코드를 생성한다.

마지막으로 작성한 코드를 표준에 맞도록 리팩토링한다. 이 기법을 개발했거나 '재발견' 한 것으로 인정되는 Kent Beck은 2003년에 TDD가 단순한 설계를 장려하고 자신감을 불어넣어준다고 말하였다. (from 위키백과)

참고 문서 : TDD를 해야하는 이유

Let's go

create core app

시작하기 전에 core앱을 만들게요. 중앙관리자 역할을 하는 커맨드센터
녀석을 만드는 거에요.

  • 앱간에 share하는 코드를 간직함
$ python manage.py startapp core # 도커 컴포즈 안쓸때
or
$ docker-compose run app sh -c "python manage.py startapp core" # 도커컴포즈 쓸때

  • tests.py, views.py 파일 두개를 삭제
  • test/__init__.py 폴더 생성
    • 여러 테스트 파일을 생성하기 위함임.

core앱 등록 settings.py에 해주는 거! 잊으면 안됩니다.

Add tests for custom user model

tests/test_models.py 파일 생성

orm을 통해서 db에 데이터를 간단하게 만들어서 테스트할거에요.

from django.test import TestCase
from django.contrib.auth import get_user_model
  
class ModelTests(TestCase):
    def test_create_user_with_email_successful(self):
        '''Test creating a new user with an email is successful'''
        email = 'test@example.com'
        password = 'testpassword123' 
        user = get_user_model().objects.create_user(
            email=email,
            password=password,
        )

        self.assertEqual(user.email, email)
        self.assertTrue(user.check_password(password))

check_password(raw_password)는 raw_password를 받아 db에 암호화된 값과 비교하여 동일하면 True or False에요. 직관적이네요.

지금은 get_user_mode() 사용을 위한 커스텀 작업을 하지 않았기에 바로 테스트 적용을 할 수 없어요.

python mange.py test

돌리게 되면 fail나요.
user model을 정의하지 않았기 때문이에요.

그럼 커스터마이징하여 정의한 이후 통과시켜 봐야겠조?

to be continued

profile
어제보다 오늘 그리고 오늘 보다 내일...

0개의 댓글

관련 채용 정보