본문 바로가기

Web/Web

장고에서 Unittest하기

소프트웨어 테스트의 3가지 방법
UI Testing / End-To-End Testing : UI 엔드포인트 테스트

  • 실제로 구현 된 프로젝트 사이트에 들어가서 확인을 하는 과정입니다.

Intergration Testing : 통합 테스트

  • Api를 호출 및 응답을 받으면서 확인을 하는 과정입니다.

Unit Testing : 유닛 테스트

  • 실제 코드 함수를 프로그램 내에서 실행하여 에러를 찾는 과정입니다.

UI , 통합, Unit 순서로 앞으로 갈수록 테스트가 어렵지만 효과는 제일 좋습니다

그래서 UI 10% 통합 20% Unit 70%로 전체 테스트를 구현하는 것이 좋습니다.

하지만 테스트를 하기에는 기능 구현이후 실제 베타 서비스가 가능하니 등한시하는 경우가 있습니다.

기업이 고객에게 신뢰를 받고 가치를 제대로 전달하기 위해서는 테스트후 배포를 해야합니다.

그래서 필수의 개념으로 바라 보시는게 좋습니다

테스트의 원칙

1. 모든 코드는 테스트로 증명될수 있습니다.
2. 테스트는 제일 작은 단위의 기능이 정확히 동작하는지 증명이 가능합니다.
3. 테스트들은 서로 독립적으로 이루어 져야 합니다.
4. 기존 데이터에서 가져와 테스트 데이터로 사용할 경우  테스트 데이터의 사용한 내용을 삭제해야 합니다.
5. 테스트는 본인의 코드에 대한 책임을 가지는 행위로 꼭 해야합니다.

파이썬에 유닛테스트에 대해 알아 보겠습니다.

파이썬의 유닛테스트 개념
TestCase : 유닛테스트 프레임워크의 테스트 단위
Fixture : 테스트용 데이터 또는 설정
assertion : 유닛테스트 부분 로직이 재대로 됬는지 확인하는 부분

Test Output message

0 예외 케이스
-1 False (Error Output)
1 True

유닛 테스트 개발 과정

\---unittest를 사용합니다.

\---unittest.TestCase 클래스를 상속하는 테스트 클래스를 만듭니다.

\---테스트 클래스안에 test\_로시작하는 테스트 메서드(함수)를 만듭니다.

\---테스트 메서드를 호출하고 self.assert\*()메서드를 사용한다. (assertEqual, assertTrue, assertFalse, assertRaises, assertRegex 등)

\---완성후 unittest.main()을 호출 합니다.