test code 작성 중 오류가 발생했다.
처음 작성해서 그런지 한참을 헤맨 간단하고 기본적이지만 몰랐던 오류!
class DiaryUploadAPIViewTestCase(APITestCase):
@classmethod
def setUpTestData(cls):
cls.user_data = {"email":"testdiary@gmail.com",
"nickname":"test",
"password":"password"
}
cls.diary_data = {"title":"test title","content":"test content"}
cls.user = User.objects.create_user("testdiary@gmail.com", "password", "test")
cls.diary = Diary.objects.create(**cls.diary_data, user=cls.user)
코드상으로 문제가 없어 보이는데 아래와 같은 오류가 계속 발생했다.
access token을 계속 찾지 못하고 있어서 로그인과 회원가입의 문제라고 생각은 했지만 갈피를 못 잡고 있었다.
혼자 두 시간 끙끙 댔지만 방법을 모르겠다..
def setUp(self):
self.access_token = self.client.post(
reverse("users:token_obtain_pair"), self.user_data).data["access"]
처음엔 setUp이 잘못 된 줄 알고
def setUp(self):
response = self.client.post(
reverse("token_obtain_pair"), self.user_data)
self.access_token = response.data.get("access")
이렇게 response에 담아서 해봤는데 test가 돌아가서 해결한 줄 알았다.
하지만 self.access_token 값이 없어서 다음 진도가 나가지 않았음.
cls.user = User.objects.create_user("testdiary@gmail.com", "test", "password")
여기서 test@gmail.com으로 오타가 있어서 발견하고 이거구나 싶어서 수정 했지만 그래도 동일했다.
하지만 이것 또한 오류는 맞았어서 오탈자를 잘 확인하자는 다짐을 또 하게 되었다.
user.models.py
...
class UserManager(BaseUserManager):
def create_superuser(self, email, nickname, password=None):
user = self.create_user(
email,
nickname=nickname,
password=password,
)
user.is_admin = True
user.save(using=self._db)
return user
생각지도 못했다.. test code에서 create_user를 할 때 이 user model에서 가져오는데 순서가
되어 있어서
class DiaryUploadAPIViewTestCase(APITestCase):
@classmethod
def setUpTestData(cls):
cls.user_data = {"email":"testdiary@gmail.com",
"nickname":"test",
"password":"password"
}
cls.diary_data = {"title":"test title","content":"test content"}
cls.user = User.objects.create_user("testdiary@gmail.com", "password", "test")
cls.diary = Diary.objects.create(**cls.diary_data, user=cls.user)
여기서
User.objects.create_user("testdiary@gmail.com", "password", "test")
이 부분을
User.objects.create_user("testdiary@gmail.com", "test", "password")
이렇게 email > nickname > password 순서로 해야 한다..
후...
이렇게 또 하나 배웠는데, 이런 기본적인 개념을 알게 될 때마다 아쉽다..!!
이러한 사소한 개념들을 얼마나 아느냐가 코드 이해의 기반이 된다고 생각되어 꾸준히 공부 할 예정이다.
가보자고!!