장고 관리자를 조물딱 해볼게요.
장고에서 자랑하는 좋은 인터페이스 중 하나로 유저 목록을 한번에 확인하고 생성,수정,삭제 할 수 있조?!
현재 TDD방식으로 개발하는 만큼 테스트부터 만들어 주겠습니다.
app/core/tests/test_admin.py
from django.test import TestCase, Client
from django.contrib.auth import get_user_model
from django.urls import reverse
class AdminSiteTests(TestCase):
def setUp(self):
self.client = Client()
self.admin_user = get_user_model().objects.create_superuser(
email='admin@testtest.com',
password='password123',
)
self.client.force_login(self.admin_user)
self.user = get_user_model().objects.create_user(
email = "test@testtest.com",
password = 'password123',
name = 'Test user full name'
)
def test_users_listed(self):
"""Test that users are listed on user page"""
url = reverse('adimin:core_user_changelist')
res = self.client.get(url)
self.assertContains(res, self.user.name)
self.assertContains(res, self.user.email)
여기서 눈에 띄는부분에 setUP()
메서드인데요. 이전에 못보던 녀석이조?
테스트를 본격적으로 시작하기 전에 가장 먼저 시행되는 메서드에요.
구성요소 중 하나가 Client()
인데요. 우리가 정의하고 생성할 유저가 로그인했는지 안했는지 확인하기 위해 필요해요. 통상 일반 고객들이 크롬과 같은 웹브라우저를 통해서 로그인을 클릭하고 타이핑해서 진행하는데 그 인터페이스 역할을 대신하는 역활을 맡아요.
force_login
장고 authentication 시스템을 사용한다면 원활한 테스트를 위해서 사용하면 좋아요. 왜냐하면 수동으로 로그인 할 필요가 없이 저 메서드 하나만 쓰면 끝이거든요.
이제 def test_users_listed(self):
메서드를 정의할게요.
reverse메서드 보이조?
url = reverse('adimin:core_user_changelist')
assertContain(res, self.user.name)
을 살펴보면 첫번째 res객체에 self.user.name
이 포함되어 있는지 판별하게되요.
다음 시간에 테스트 코드를 ok사인받게 만들어 볼게요.