[django | validation] Build a Backend REST API - 11

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

Add tests for listing user in Django admin 🚵‍♂

장고 관리자를 조물딱 해볼게요.
장고에서 자랑하는 좋은 인터페이스 중 하나로 유저 목록을 한번에 확인하고 생성,수정,삭제 할 수 있조?!

현재 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사인받게 만들어 볼게요.

profile
어제보다 오늘 그리고 오늘 보다 내일...
post-custom-banner

0개의 댓글