django에서의 functional test와 unit test
TDD를 공부하다가 소프트웨어 테스팅에서의 용어와 라이브러리 용어가 헷갈릴 수 있어서 짤막하게 정리하였다. Unit Test 단위 테스트 프로그램의 로직을 알고있고 프로그램의 내부에서 프로그래머가 테스팅 할 때 사용한다. django에서 unittest를 수행할 때는 django.test.TestCase 모듈을 사용한다. 이 모듈은 python built-in module인 Unittest의 확장이다. python manage.py test를 입력면 app들의 test 모듈을 돌면서 test.py에 명세된 테스트를 실행한다. TDD에서 1. 프로그래머가 test하지 않아도 되는 대상들은 이미 테스팅 된 부분, django core, 서드 파티 패키지중 테스트가 끝난 모듈 이다. 2. 프로그래머가 test할 대상들은 '1번 외의 모든 것'이다. django project의 경우 뷰, 모델, 폼부터 유효성 검사기 시그널, 필터, 템플릿 태그, 커스텀 utility module 등. Functional Test 기능 테스트 프로그램의 외부에서 프로그래머가 아닌 사용자 입장에서 테스팅 할 때 사용한다. 기능 테스트 = UI 테스트 = GUI 테스트 django에서 기능 테스트(ft)를 수행할 때는 python built-in module Unittest와 selenium web driver를 조합하여 사용한다. Mock & Fixture Mock 외부 api를 이용하는 기능에 대한 단위 test가 필요할 때 두 가지 방식을 사용한다. 1, 단위 test 자체를 통합 test로 변경한다. 2. mock 라이브러리로부터 mock 객체를 생성하여 사용한다. (python 3.3부터 unittest.mock으로 통합됨) 2의 경우 mock을 생성한다는 것은 외부 API에 대한 가짜 응답을 생성하는 행위이다. 가짜 응답을 생성함으로써, django 뿐 아니라 다른 환경에서도 이용 가능한 시스템의 일부를 대체할 수 있는 객체로 테스트할 수 있다. 간편...