2017-03-06 4 views
1

ive 내가보기를 좋아할 전망 메서드가 있습니다. self.client.get 메서드에 데이터를 제공하고 있지만 폼의 유효성 검사에 실패합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? request.post를 사용하여 장고 테스트를 수행하는 방법은 무엇입니까?

using django 1.8 
python 3.5 

이 그것이 응답이 내가 가진 무엇인가 얻는 원인

def test_saveNewDriverInfo(self): 
      self.client.login(username="testuser",password="testuser321") 
response= self.client.get(reverse('carmanager:saveNewDriverInfo'),data={'form':{'carID':'1034567','Driver_Last_Name':'daddy','Driver_First_Name':'daddy','Driver_Middle_Initial':'K','entered_by':'king'}}) 
      #self.assertRedirects(response, expected_url, status_code, target_status_code, host, msg_prefix, fetch_redirect_response) 

      self.assertNotContains(response, 'something went wrong' ,200) 

는이 테스트 작업에주의 시험 방법을있는보기 방법

def saveNewDriverInfo(request): 
    if request.user.is_authenticated(): 
     form = DriverForm(request.POST) 
     if form.is_valid(): 
      new_Driver = form.save() 
      carid = form.cleaned_data['carID'] 
      Car = get_object_or_404(Car, pk=carid) 
      return redirect('carmanager:carDetails', carID=carid 
     else: 
      return HttpResponse("something went wong some where! yes i said wong!") 

입니다. 하지만 주석이 달린 줄은 내가 사용하고 싶은 것이다.

그러나 DriverForm에 정보를 공급하는 것 같지 않습니다. 어떤 도움을 크게 주시면 감사하겠습니다.

답변

1

귀하의 견해가 이 아닌 POST 데이터 (request.POST)를 찾고 있기 때문에 귀하의 테스트에는 self.client.post(url, data)을 사용해야합니다. 테스트가 self.client.get에 데이터를 전달하는 방식으로 https://docs.djangoproject.com/en/1.10/topics/forms/#the-view

나는 조금 혼란 스러워요 : 나는 또한 좋을 것

여기에 주어진 템플릿에 맞게보기를 리팩토링합니다. 양식에 carID, Driver_Last_Name 등이 있다고 가정하면 self.client.get에 대한 호출은 self.client.get(url, data={'carID': <id>, 'Driver_Last_Name': <driver_last_name>, ...})과 같아야합니다. 'form' 키가 필요하지 않습니다. self.client.post도 마찬가지입니다. 또한 여기에서보십시오 : https://docs.djangoproject.com/en/1.10/topics/testing/tools/#django.test.Client.get

+0

나는 그것을 보지 못했다고 생각합니다 !! ....... ive는 게시물 대신 get을 사용했습니다. 답장을 보내 주시면 감사하겠습니다. – Blue

관련 문제