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

Hyeseong·2021년 2월 25일
0
post-custom-banner

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
어제보다 오늘 그리고 오늘 보다 내일...
post-custom-banner

0개의 댓글