테스트 코드를 작성하고 나서의 후기:
원래는 테스트 코드를 작성해보지는 않았으나, 실제 로컬에서 실행하여 테스트하기 번거로운 내용이 있기에 테스트를 진행하였다. 결과는 충격적...
생각이상으로 함수가 내가 상상하는 방향으로 되지 않았다. 테스트 코드를 작성하면서 실패하는 걸 보면서 오히려 코드를 더 잘알아야 테스트 코드가 의미가 있겠구나 하는 생각이 들었다.
class TestUserToggle(APITestCase):
def setUp(self):
self.client = APIClient()
self.user = get_user_model().objects.create_user(
email='testuser@email.com',
password='testpass123',
name="name"
)
self.admin = get_user_model().objects.create_superuser(
email='adminuser@email.com',
password='adminpass123',
name="name1"
)
self.client.force_authenticate(user=self.admin)
def test_toggle_is_admin(self):
self.client.login(email='adminuser@email.com', password='adminpass123')
url = reverse('admin', kwargs={'pk': self.user.pk})
response = self.client.put(url)
self.user.refresh_from_db() # Refresh user object after PUT request
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertTrue(self.user.is_admin)
def test_toggle_is_active(self):
self.client.login(email='adminuser@email.com', password='adminpass123')
url = reverse('active', kwargs={'pk': self.user.pk})
response = self.client.put(url)
self.user.refresh_from_db() # Refresh user object after PUT request
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertFalse(self.user.is_active)
내가 작성한 테스트 코드다. 테스트를 진행하면서 내가 view 로직을 잘못 쓴것도 있었고, 테스트 결과를 반대로 (assertFalse가 아닌 assertTrue를 써서) 해버려 계속 실패가 뜬적도 있었는데, 아무튼 시간이 많이 들었지만 테스트 코드를 통해 더욱 근거있는 코드를 완성했다고 생각한다.
'일지' 카테고리의 다른 글
배포 경험 되돌아보기 (1) | 2023.05.16 |
---|---|
2023.05.15 (0) | 2023.05.15 |
2023.05.11 (0) | 2023.05.15 |
2023.05.10 (0) | 2023.05.10 |
2023.05.09 (0) | 2023.05.10 |