2009-09-02 4 views
9

단위 테스트를 내 장고 프로젝트에 통합하기를 원합니다. 장고가 함수를 사용하여 뷰를 구현하는 방식 때문에 단위 테스트가 까다로울 수 있다는 것을 발견했습니다.Django 뷰의 단위 테스트는 어떻게합니까?

예를 들어, 각 함수는 장고의 뷰/페이지이며 함수에 URL이있는 경우입니다.

장고보기 단원 테스트는 어떻게합니까?

답변

10

뷰 테스트가 까다로운 방법을 잘 모르겠습니다.

test client을 사용하면됩니다.

코드 커버리지는 쉽습니다. URL 요청이 코드 경로에 매핑되는 방식을 고려하고 적절한 URL 요청을 수행합니다.

원하는 경우 Request 개체를 만들고 Response 개체를 검사하여 뷰 기능을 "수동으로"호출 할 수 있지만 너무 많은 작업입니다.

코드 범위에 의문 사항이있는 경우 좋은 방법입니다. 즉, URL에 쉽게 매핑 할 수없는 코드 (사용자가 웹 응용 프로그램을 볼 수있는 모든 코드)가 있음을 의미합니다. URL에 매핑되지 않는 코드가있는 경우 (a) delete 코드 또는 (b) 리팩터링하여 별도의 모듈로 만듭니다.

우리는 뷰 기능 밖에 모듈을 많이 가지고 있습니다. 뷰 기능은 이러한 모듈을 가져옵니다. 우리는 이러한 "외부 뷰 기능"모듈을 일반적인 unittest로 테스트합니다.


다음은 일반적인 구조입니다.

+0

흠 이것은 내가 가지고있는 다른 질문에 대답 할 수 있습니다. django 프로젝트/app 계층 구조에 다른 모듈을 추가 할 때 디렉토리 구조를 어떻게 관리합니까? –

+0

감사합니다. 그게 많은 도움이됩니다. –

+0

test_all.py는 어떻게 작동합니까? 하나의 큰 TestCase.TestSuite에 모든 것을 가져 가고 싶다고 가정하고 실행합니다. 그렇게하면 모든 테스트 통계 (통과 및 실패)가 끝에 단일 출력으로 집계됩니다. 나는 여분의 유닛 테스트를 실행하기 위해 장고의 "manage.py 테스트"를 커스터마이징해야하는지, 아니면 장고의 단위 테스트를 통합 한 내 자신의 최상위 테스트 러너를 작성해야 하는지를 결정할 수 없다. –

2

django.test.client에는보기의 기본 단위 테스트에 필요한 모든 것이 있어야합니다. 전체 스택을 테스트하기 위해 twillselenium을 정말 좋아합니다.

0

tddspry - nosetests 및 능 직물을 사용하여 장고를 테스트 할 수있는 도우미 컬렉션을 시도해 볼 수 있습니다. 코에는 또한 적용 범위의 예쁜 보고서를 생성하는 범위 플러그인이 있습니다.

관련 문제