본문 바로가기

Django

django 단위 테스트 작성하기 (TDD)

단위 테스트

프로그래머 관점에서 애플리케이션 내부를 테스트하는 것 하위 레벨의 개발 주도한다는 뜻

TDD 작업 순서

  • 기능 테스트를 작성 후 사용자 관점의 새로운 기능성을 정의하는 것부터 시작한다.
  • 기능 테스트가 실패하고 나면 어떻게 코드를 작성해야 테스트를 통과할지를 생각해보도록 한다.
    이 시점에서 하나 또는 그 이상의 단위 테스트를 이용해서 어떻게 코드가 동작해야하는지 정의한다.
  • 단위 테스트가 실패하고 나면 단위 테스트를 통과할 수 있을 정도의 최소한의 코드만 작성한다.
    기능 테스트가 완전해질 때까지 과정 2, 3을 반복해야할 수 도 있다.
  • 기능 테스트를 재실행해서 통과하는지 또는 동작하는지 확인한다.
    이 과정에서 새로운 단위 테스트를 작성해야 할 수도 있다.

Django 단위 테스트

django에서 app을 생성하게 되면 test.py가 생성된걸 볼 수 있다.

빠른 이해를 위해 간단하게 테스트를 만들어서 실행해보자

# test.py
from django.test import TestCase

class ExampleTest(TestCase):
      def test_maths(self):
          self.assertEqual(1 + 1, 3)

일단 간단하게 위의 로직을 돌려봐야하는데 test를 돌리는 구문은 따로 있다. python manage.py test 로 돌리면 된다.

돌리면 실패할 것 이다. 1+1은 3이 아니고 2이니깐

그럼 assertEqual()에 대해서 궁금할법 하다.

해당 구문은 단위 테스트에서 두 값의 동등성을 확인하는데 사용되는 단위테스트 라이브러리 함수이다.

이 함수는 세개의 매개변수를 입력으로 사용하고 주장 조건에 따라 부울 값을 반환한다. (assertEqual(first_value, second_value, message) 세개의 매개변수는 이렇게 사용가능하다.)

두개의 입력 값이 같으면 assertEqual()은 true를 반환하고 그렇지 않으면 false를 반환한다.

그럼 assertEqual에 들어가는 인자에 대해서 알아볼 수 있다.

  • first_value : 함수별 비교에 사용되는 모든 유형의 변수
  • second_value : 함수별 비교에 사용되는 모든 유형의 변수
  • message : 테스트 케이스가 실패했을 때 표시되는 메시지로 문자열 문장