Django는 코드를 app 형태로 구조화한다.
하나의 프로젝트는 여러 앱을 가질 수 있으며 다른 사람이 만든 외부 앱도 사용할 수 있다.
또한 다른 프로젝트에서 만든 자신의 앱을 재사용할 수도 있다.
$ python manage.py startapp lists
작업 순서
Django는 특수한 TestCase 버전을 사용한다. 기본 unittest.TestCase의 확장 버전으로 Django 특화 기능이 추가되어 있다.
고의적인 실패 테스트
실행
$ python manage.py test
오류 확인
커밋
커밋하기에 적절한 시점이다. git diff 명령어로 항상 커밋전에 변경 내용을 확인하자.
Django workflow : MVC(Model - View - Controller)
테스트
에러 확인
ImportError : 아직 존재하지 않는 것을 임포트하려고 했다.
현재 실패 테스트
lists.views에서 home_page를 임포트할 수 없는 상태다.
테스트 실행 및 에러 확인
Traceback을 확인해 보면 '/'를 확인하려고 할 때 Django가 404 에러를 발생시키고 있다는 것을 알았다. 즉, Django가 '/'에 해당하는 URL맵핑을 찾을 수 없다는 것이다.
'/'에 해당하는 URL을 작성하고 다시 실행
오류 확인
단위 테스트가 URL과 lists/views.py에 있는 home_page = None 사이의 링크를 만들었지만 home_page를 호출할 수 없다는 오류를 확인할 수 있다. home_page가 함수가 아니기 때문이다.
함수 작성
테스트 결과 확인
첫 단위 테스트 성공 및 커밋
git commit -m '첫 단위 테스트와 url 맵핑 그리고 임시 뷰'
현재 뷰에는 빈 함수가 있다. HTML 형식의 실제 응답을 반환해야 한다.
HTML을 반환하는지 확인하는 테스트를 작성해보자.
코드 설명
결과 확인
함수에 request 인자를 설정하지 않은 것이다.
단위 테스트 - 코드 주기
1. 터미널에서 단위 테스트를 실해해서 어떻게 실패하는지 확인한다.
2. 편집기상에서 현재 실패 테스트를 수정하기 위한 최소한의 코드를 변경한다.
그리고 이것을 반복한다.
?코드 품질을 높이고 싶다면 코드 변경을 최소화해야 한다. 또한 최소화한 코드는 하나하나 테스트에 의해 검증돼야 한다.