본문 바로가기

프로젝트/I들 ChangeArt

머신러닝 프로젝트 - 테스트 코드 작성

https://github.com/sdoram/B8_ChangeART

 

GitHub - sdoram/B8_ChangeART: B8조 ChangeART 백엔드

B8조 ChangeART 백엔드 . Contribute to sdoram/B8_ChangeART development by creating an account on GitHub.

github.com

1.테스트 코드로 users view 확인하기 

 문제점

users에서 이메일 인증을 포함한 test 코드 작성 필요 

 시도해 본 것들

class SignupViewTest(APITestCase):
    @classmethod
    def setUpTestData(cls):
        cls.email = {"email": "signup@test.com"}
        cls.url = reverse("athnt_code_create_view")

    def setUp(self):
        self.response = self.client.post(self.url, self.email)
        self.verify = Verify.objects.get(email=self.email["email"])

setUp으로 미리 이메일 인증코드 발송절차 실행과 Verify 모델에서 객체 지정

 

Verify 모델
def test_signup(self):
        url = reverse("signup_view")
        user_data = {
            "email": "signup@test.com",
            "nickname": "테스트",
            "password": "1234",
            "verify_code": self.verify.athnt_code,
        }
        response = self.client.post(url, user_data)
        self.assertEqual(response.data["message"], "가입완료!")

setup에서 미리 인증코드를 보내고 그 데이터를 활용해서 인증절차 확인 성공 

 알게 된 점

 test code를 작성할 수 있는지가 내가 그 코드를 제대로 이해했는지 판단할 수 있는 기준이 되는 것 같다. 

 

2.테스트 코드로 articles view 확인하기

 문제점

class CommentViewTest(APITestCase):
    @classmethod
    def setUpTestData(cls):
        cls.user = User.objects.create_user("article@test.com", "테스트", "1234")
        cls.login_data = {"email": "article@test.com", "password": "1234"}
        cls.faker = Faker()
        cls.article = Article.objects.create(
            title=cls.faker.sentence(), content=cls.faker.text(), user=cls.user
        )
        cls.article_id = cls.article.get_absolute_url().split("/")[1]
        cls.data = {"content": "댓글 작성 테스트"}
        cls.put_data = {"content": "댓글 수정 테스트"}

    def setUp(self):
        self.access_token = self.client.post(
            reverse("login_view"), self.login_data
        ).data["access"]
        self.before_comment = self.client.post(
            path=reverse("comment_create_view", args=[self.article_id]),
            HTTP_AUTHORIZATION=f"Bearer {self.access_token}",
            data=self.data,
        )
        self.comment_id = self.before_comment.data["id"]

    def test_post_comment(self):
        response = self.client.post(
            path=reverse("comment_create_view", args=[self.article_id]),
            HTTP_AUTHORIZATION=f"Bearer {self.access_token}",
            data=self.data,
        )
        self.assertEqual(response.data["content"], "댓글 작성 테스트")

    def test_put_comment(self):
        response = self.client.put(
            path=reverse("comment_view", args=[self.comment_id]),
            HTTP_AUTHORIZATION=f"Bearer {self.access_token}",
            data=self.put_data,
        )
        self.assertEqual(response.data["content"], "댓글 수정 테스트")

    def test_delete_comment(self):
        response = self.client.delete(
            path=reverse("comment_view", args=[self.comment_id]),
            HTTP_AUTHORIZATION=f"Bearer {self.access_token}",
            data=self.put_data,
        )
        self.assertEqual(response.data["message"], "댓글 삭제")

이렇게 내가 담당한 부분은 막히지 않고 잘 작성할 수 있었지만, 내가 담당하지 않고 아직 잘 모르는 코드에 대해서는 잘 작성하지 못했다. 

 알게 된 점

테스트 코드를 작성하려면 진행과정이 어떻게 이어지는지 알아야 정확한 테스트를 할 수 있다.