2011-10-30 2 views
0

장고 프로필 앱에서 뷰에 대한 몇 가지 테스트를 작성하고 싶습니다.Django 프로필 앱에서보기를 테스트하기위한 모범 사례가 있습니까?

보기에는 몇 가지 현명한 오류 처리 논리가 있습니다. 예 : 프로필을 만들려고하지만 이미 프로필이 있으면 기존 프로필 페이지 (또는 프로필 편집 페이지)로 리디렉션하면됩니다.

이 오류 처리가 원하는대로 작동하는지 테스트하려면 어떻게해야합니까? 모범 사례는 무엇입니까?

Zombie.js를 사용하여 BDD를 수행하고 제목이 "프로필 작성"이 아닌 페이지를 보았는지 (또는 제목이 "프로필 수정"인 페이지가 표시되는지 확인) 한 가지 아이디어가 있습니다. 그러나 장고 테스트 문서 말 :

  • 사용 장고의 테스트 클라이언트가 올바른보기라는 인되어 있고보기가 올바른 컨텍스트 데이터를 수집 것을 입증 할 수 있습니다.
  • Twill 및 Selenium과 같은 브라우저 내 프레임 워크를 사용하여 HTML과 웹 페이지의 동작, 즉 JavaScript 기능을 테스트합니다. - 낮은 수준에 이르기까지 모든 HTTP

    • 시뮬레이션 GET과 URL에 POST 요청과 응답을 관찰 : 나는 장고 테스트 클라이언트를 사용하려면

    그러나, 다음이 할 수있는 (결과 헤더 및 상태 코드)를 페이지 내용에 적용합니다.

  • 주어진 URL에 대해 올바른보기가 실행되는지 테스트합니다.
  • 주어진 요청이 특정 값을 포함하는 템플릿 컨텍스트와 함께 주어진 장고 템플릿에 의해 렌더링되는지 테스트합니다.

테스트 클라이언트를 사용하고 페이지 콘텐츠를 볼 수 있습니까? 렌더링 된 템플릿을 볼 수 있습니까? 이 뷰를 테스트하는 적절한 방법은 무엇입니까?

답변

1

리다이렉트 및 프로파일 생성은 매우 장고하므로 JS 기능을 테스트하기 위해 다른 프레임 워크를 사용할 수 있지만이 인스턴스에는 django 테스트 클라이언트를 사용하고 있습니다.

테스트와 얼마나 멀리 갈 것인지를 결정해야합니다. 시간은 제한적이며 일부 측면은 다른 측면보다 파손되기 쉽습니다. 예를 들어 템플릿 확인에 대해서는 걱정할 필요가 없습니다. 200 개의 상태 코드와 내용에 대한 빠른 확인은 충분합니다.

어쨋든, 나는 (내가 여기 추측하고있어) 뷰가 가지고있는 여러 가지 상태를 식별하여 시작 했죠 :

  • 프로필 자체를 렌더링 (등 내용, 템플릿, 상태 코드를 확인) 양식 유효성 검사 오류
  • 프로필 형식 성공 : 프로필 만들기 : 성공 리디렉션
  • 스마트 오류 처리/리디렉션.

이 오류 처리가 원하는대로 작동하는지 테스트하려면 어떻게해야합니까?

# create object with specific ID. 
# post form data that should trigger your special redirect. 
# ensure the redirect takes you to the model you just created via reverse 
response = client.post(reverse('form_url'), {'valid_form_data': ''}, follow=True) 
assertRedirects(response, reverse('view_url', args=[id]), target_status_code=200) 

이이 작업을 트리거해야 결정했습니다 어떤 데이터 제공에 올바른 프로필 리디렉션되고 있음을 확인합니다.

+0

Django 테스트 코드 외부에서 assertRedirects를 사용할 수 있습니까? lettuce (http://lettuce.it)를 사용하여 테스트 케이스를 작성하고 있는데, 테스트를 많이 지정하는 것이 쉬워지기는하지만 Django TestCase 오브젝트에 있다고는 생각하지 않습니다. –