T.I.L June 12, 2023 (test code)

2023. 6. 12. 22:04T.I.L (Today_I_Learned)

유저 관련 테스트 코드


from django.urls import reverse
from rest_framework import status
from rest_framework.test import APITestCase
from users.models import User


class SignUpTest(APITestCase):
    '''
    작성자 : 
    작성날짜 : 
    작성내용 : 회원가입시 발생할 수 있는 이슈들에 관한 테스트 코드
    업데이트 날짜 : 
    '''
    def test_signup(self):
        url = reverse("sign_up")
        user_data = {
            "email": "user1@google.com",
            "username": "user1",
            "password": "Test!!11",
            "re_password": "Test!!11",
        }
        response = self.client.post(url, user_data)
        self.assertEqual(response.status_code, 201)
    
    def test_signup_wrong_password_validate(self):
        url = reverse("sign_up")
        user_data = {
            "email": "user1@google.com",
            "username": "user1",
            "password": "test11",
            "re_password": "test11",
        }
        response = self.client.post(url, user_data)
        self.assertEqual(response.status_code, 400)
    
    def test_signup_wrong_password_pattern(self):
        url = reverse("sign_up")
        user_data = {
            "email": "user1@google.com",
            "username": "user1",
            "password": "tttTTT111!!!",
            "re_password": "tttTTT111!!!",
        }
        response = self.client.post(url, user_data)
        self.assertEqual(response.status_code, 400)
    
    def test_signup_not_re_password(self):
        url = reverse("sign_up")
        user_data = {
            "email": "user1@google.com",
            "username": "user1",
            "password": "Test!!11",
        }
        response = self.client.post(url, user_data)
        self.assertEqual(response.status_code, 400)


class LoginTest(APITestCase):
    '''
    작성자 : 
    작성날짜 : 
    작성내용 : 로그인시 발생할 수 있는 이슈들에 관한 테스트 코드
    업데이트 날짜 : 
    '''
    def setUp(self):
        self.url = reverse('log_in')
        self.user_data = User.objects.create_user(email="user1@google.com", username="test", password="Test!!11")
    
    def test_login(self):
        user ={
            "email": "user1@google.com",
            "password":"Test!!11",
        }
        response = self.client.post(self.url, user, format='json')
        self.assertEqual(response.status_code, 200)

    def test_login_wrong_password(self):
        user ={
            "email": "user1@google.com",
            "password":"test!!11",
        }
        response = self.client.post(self.url, user, format='json')
        self.assertEqual(response.status_code, 401)

이번 프로젝트에 들어와서 처음으로 테스트 코드를 작성해 보았습니다.

 

우선 위의 코드는 아직 배우는 단계에서 작성해본 코드라서 좋은 테스트 코드는 아닙니다.

그럼에도 벌써 장점을 느낄 수 있었습니다.

1. 테스트 코드를 작성하는 것 만으로도 코드의 로직을 더 잘 이해하는데 도움이 되었습니다. (리팩토링을 하는 느낌)

2. 에러를 더 잘 파악할 수 있었습니다.

 

조금 더 테스트 코드를 익힌 다음 자세한 글을 옮기겠습니다.