2012-03-06 6 views
2

잘 알려진 또는 알려진 나쁜 사전에 대해 양식 객체를 인스턴스화하여 양식 정리를 쉽게 테스트 할 수 있습니다. 연관된 뷰 로직은 이러한 동일한 dict을 취하고 테스트 클라이언트를 사용하여 테스트 할 수 있습니다.django 양식 제출을위한 단위 테스트

그러나 실제 HTML 양식 요소의 기본 문제는 여전히 남아 있습니다. 잘못된 방법을 사용하면 어떻게 될까요? 아니면 행동에 오타가 있습니까? 아니면 CSRF_Token을 잊어 버렸습니까? 사용자가 경험할 가능성이있는 동작을 실제로 테스트하는 단위 테스트를 작성하려면 어떻게해야합니까?

기계화를 사용해야합니까?

사람들이 .get (url)을 사용하고 응답의 HTML 콘텐츠를보고 양식 요소를 구문 분석합니까? 이 작업을 수행하는 더 깨끗한 방법이 있습니까?

+0

복잡한 동작을 테스트하는 것은 단위 테스트가 아니며 통합 테스트입니다. django-sane-testing 프로젝트를 참조하십시오. 거의 모든 가능한 테스트 케이스를 캡슐화합니다. – yedpodtrzitko

+0

글쎄, "페이지의 양식이 my_good_post와 동일한 정보로 채워지면 my_good_post와 같은 객체를 만듭니다"라는 개별 테스트는 하나의 단위입니다. 내 사고 방식으로. 내 단위 테스트 스위트에서이 정확한 동작을 테스트 할 수 있기를 원합니다. – jMyles

답변

0

Django 1.4에 추가 된 LiveServerTestCase으로 처리 할 수 ​​있습니다.

+0

차가움. 그들이 그것을 추가한지 몰랐다. – miki725

1

이것은 장고 (Django) HTML 테스트뿐만 아니라 HTML 동작을 테스트해야하는 다른 어플리케이션에도 관련됩니다.

requests과 같은 라이브러리를 사용하여 다른 방법 (GET/POST/etc)을 사용하여 브라우저 관점에서 양식을 테스트 할 수 있습니다.

더 많은 사용자 상호 작용 테스트를 위해 Selenium을 사용할 수 있지만, 제가 개인적으로는 Splinter을 더 좋아합니다. splinter에서는 실제 브라우저로 사용할 수있는 browser이라는 인스턴스를 인스턴스화합니다. 그런 다음 브라우저에서 텍스트 상자, 단추 누르기 등을 채운 다음 동작을 테스트 할 수 있습니다. 이 브라우저가 열립니다에서

from splinter.browser import Browser 
browser = Browser() 
# Visit URL 
url = "http://www.google.com" 
browser.visit(url) 
browser.fill('q', "#cobrateam") 
# Find and click the 'search' button 
button = browser.find_by_css(".lsb") 
# Interact with elements 
button.click() 
if browser.is_text_present("did not match any documents"): 
    print "nobody likes us =(" 
else: 
    print "we're popular =)" 

, 질문 필드를 입력, 구글로 이동 한 후 검색 버튼 및 테스트 검색 결과를 클릭합니다 : 여기

는 가시 웹 사이트에서 코드입니다. 보시다시피 라이브러리는 사용이 매우 간편하며이를 사용하여 매우 정교한 테스트를 수행 할 수 있습니다.

+0

물론 애플리케이션의 실제 인스턴스 서버 인스턴스를 테스트 할 때 이것이 통합 테스트입니다. 어떻게 장고 테스트 환경 (및 테스트 데이터베이스)을 사용하는 동안이 작업을 수행 할 수 있습니까? – jMyles

+0

정말 질문에 따르지 않지만 장고 테스트 서버를 실행하면 이러한 libs를 사용하여 데이터를 테스트 할 수 있습니다. 그게 도움이 되니? – miki725

관련 문제