일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- BFS
- Python
- 코테
- Priority Queue
- 모의SW역량테스트
- hash table
- aws
- Bruth Force
- 시뮬레이션
- 코딩테스트
- django
- Algorithm
- Data Structure
- Back tracking
- DFS
- GitHub
- 알고리즘
- Linked list
- 알고리듬
- JavaScript
- Vue.js
- SQL
- 구현
- gpdb
- programmers
- spring boot
- CSV
- SWEA
- Trie
- boj
- Today
- Total
hotamul의 개발 이야기
[Django] User Model 커스터마이징 #2 (TDD) 본문
[Django] User Model 커스터마이징 #1 에서 기본적인 Design을 했으니 이제 구현해보자.
TDD로 개발하는 것을 연습? 공부 중이기 때문에 먼저 test case를 만들어 보겠다.
Create test_models.py
커스터마이징 할 User
model을 사용하고자 할 app 디렉토리에 tests 디렉토리를 생성한다. (반드시 __init__.py
를 추가해야 한다. 그렇지 않으면 django가 찾지 못한다, python manage.py test
했을 때 실행되지 않음)
그리고 test_modesl.py
파일을 생성한다. (파일 이름, method이름 모두 prefix로 test_
가 있어야 하는지 기억이 잘 나지 않지만 습관처럼 파일이름, method 이름 모두 test_
로 시작하게 하겠다)
import get_user_model
먼저 email, password 만을 이용해 user 객체를 생성할 수 있는지 test 하기 위해 코드를 작성해 보겠다. 그러려면 model 객체를 생성할 수 있어야 하는데 쉽게 할 수 있는 방법은 django에서 제공하는 helper function을 이용하는 것이다.
user model 객체 생성 helper function인 get_user_model
을 이용하기 위해 아래 function을 import 한다.
from django.contrib.auth import get_user_model
그리고 다음과 같은 email, password 정보로 user model을 만들었을때 email, password를 확인하는 test method를 만들어 보자
email = 'test@example.com'
password = 'testpass123'
user = get_user_model().objects.create_user(
email=email,
password=password,
)
self.assertEqual(user.email, email)
self.assertTrue(user.check_password(password))
최종 코드는 다음과 같다.
"""
Tests for models.
"""
from django.test import TestCase
from django.contrib.auth import get_user_model
class ModelTests(TestCase):
"""Test models."""
def test_create_user_with_email_successful(self):
"""Test creating a user with an email is successful."""
email = 'test@example.com'
password = 'testpass123'
user = get_user_model().objects.create_user(
email=email,
password=password,
)
self.assertEqual(user.email, email)
self.assertTrue(user.check_password(password))
Check FAILED!
이제 python manage.py test
로 test를 실행해보자
Traceback (most recent call last):
File "/app/core/tests/test_models.py", line 15, in test_create_user_with_email_successful
user = get_user_model().objects.create_user(
TypeError: create_user() missing 1 required positional argument: 'username'
username
이라는 필수인자가 빠졌다는 것을 확인할 수 있다. username은 내가 원하는 user model에서는 필요하지 않지만 기본적으로 필수 인자 (필수 Field) 로 설정 되어 있음을 알 수 있다!!
다음 post에서는 email, password 만으로 객체를 생성할 수 있도록 커스터 마이징 해서 방금 작성한 test가 통과 될 수 있도록 해보자.
'Dev. > Django' 카테고리의 다른 글
[Django] User Model 커스터마이징 #6 (TDD) (0) | 2022.07.13 |
---|---|
[Django] User Model 커스터마이징 #5 (TDD) (0) | 2022.07.06 |
[Django] User Model 커스터마이징 #4 (TDD) (0) | 2022.07.03 |
[Django] User Model 커스터마이징 #3 (TDD) (0) | 2022.07.01 |
[Django] User Model 커스터마이징 #1 (0) | 2022.06.29 |