본문 바로가기

Django/DRF

DRF serializer test code - max_length

serializer의 max_length도 테스트해야 할 것 같아서 작성했습니다.

기능상 할 이유가 없을 것 같았지만, 협업을 하면서

다른 팀원이 max_length를 변경하는 경우가 있을 것 같아서 넣었습니다.

실제로 테스트를 실행하는 커맨드는 'python manage.py test app name.directory.file'입니다.

 

from django.test import TestCase

from ...serializer.user_serializers import UserUpdateSerializer

class TestValidUserUpdateSerializer(TestCase):
    def setUp(self):
        self.valid_data = {"last_name": "test", "first_name": "name", "email": "test@test.com"}
        self.serializer = UserUpdateSerializer

    def test_valid_data(self):
        serializer = self.serializer(data=self.valid_data)
        self.assertTrue(serializer.is_valid())

    def test_invalid_email_max_length(self):
        invalid_data = self.valid_data.copy()
        invalid_data["email"] = "a" * 92 + "@test.com"
        serializer = self.serializer(data=invalid_data)
        self.assertFalse(serializer.is_valid())
        self.assertIn("email", serializer.errors)
        self.assertIn("max_length", serializer.errors["email"][0])
        print(serializer.errors)

작성하고서 느낀 거지만 serializer의 하나의 field 혹은 여러개의 feild(전부가 아닌)에 대해서 유효성 검사하는 방법이 있나 궁금했습니다.

있다면 찾아서 업데이트 하겠습니다.