[TIL #27] 테스트 코드

안떽왕·2023년 4월 24일
0

Today I Learned

목록 보기
27/76

테스트코드란

코드의 기능과 동작을 테스트하는데 사용되는 코드를 일컫는 말입니다. 테스트를 진행하며 오류를 잡아내고 수정하는 과정이 매우 중요합니다.

테스트코드의 장점

  • 빠르고 쉽게 오류를 찾아낼 수 있다.
  • 시간과 돈을 절약할 수 있다.
  • 테스트코드를 작성하면 추후에 보더라도 어떤 기능을 만들고 시험하는지 알 수 있다.
  • 이상없이 실행 가능하다는 것을 증명할 수 있다.
  • 시간이 얼마나 걸리는지 등 파포먼스를 볼 수 있다.

TDD(test-driven development)

TDD는 테스트 주도 개발을 뜻하는 개발 방법론 중 하나로, 선 개발 후 테스트를 하는 방식이 아닌 선 테스트 후 개발 방식의 개발 방법론 입니다.

개발순서

  1. 테스트 케이스 작성
  2. 테스트 케이스를 통과하는 코드 작성
  3. 효율 증대를 위한 리팩토링

테스트코드 예시

from django.test import TestCase

class TestView(TestCase):
    def test_two_is_three(self):
        self.assertEqual(2, 3)

    def test_two_is_two(self):
        self.assertEqual(2, 2)

위의 코드는 숫자 2개를 비교해 같으면 통과하고 아니면 통과하지 못하게 만들어져 있습니다.
위의 코드는 장고에서 제공하는 모듈을 사용한 것이고 그외에도 python의 유닛 테스트 drf의 APItestcase 등이 있습니다.

간단하게 drf에서의 테스트 코드를 살펴보자면

class UserRegistrationTest(APITestCase):
    def test_registtration(self):
        url = reverse("user_view")
        user_data = {
            "email":"testman@naver.com",
            "password":"0000",
        }
        response = self.client.post(url, user_data)
        self.assertEqual(response.status_code, 201)

위의 코드를 예시로 들 수 있는데 테스트를 위한 클래스가 있고 그 안에 함수들이 동작하며 테스트를 진행하게 됩니다. 위의 경우 user_view라는 이름을 가진 url을 가지고와 사용하고 있고 reverse는 해당 url이 코드 작성도중 수정이 되더라도 상관없이 테스트 할 수 있게 해줍니다.

해당 코드는 회원가입 테스트코드로 회원가입에 성공해 201코드가 출력되면 통과할 수 있게 만들었습니다.

그리고 그 뒤에이어서 게시글과 댓글 등을 로그인 한 상태로 테스트를 하고 싶어도 위에 가입한 회원정보로는 테스트를 할 수 없습니다. 테스트코드에서 함수들은 테스트가 끝나면 모든 데이터들을 비워버리기 때문입니다. 따라서 회원가입이나 로그인 기능 등 기본으로 전제를 만들고 테스트를 하고 싶다면 다른 방법을 강구해야합니다.

def setUp(self):   
        self.data = {"email":"testman@naver.com", "password":"0300"}
        self.user = User.objects.create_user("testman@naver.com", "0300")

위와 같이 setUp을 함수명으로 사용하면 drf에서 자동으로 이 결과들을 전역함수처럼 사용하게 만들어 줄 수 있습니다.

profile
이제 막 개발 배우는 코린이

0개의 댓글