2017-03-06 7 views
1

ive私はテストしたいビューメソッドを持っています。 self.client.getメソッドにデータを供給していますが、フォームの検証に失敗します。私は間違って何をしていますか?request.postでdjangoテストを実行するには?

using django 1.8 
python 3.5 

これはviewメソッド

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!") 

あり、これは試験方法

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) 

もそれが応答は私が得たものである取得します。このテスト作業原因を注意です。コメントされている行は私が使いたいものです

しかし、私はDriverFormに情報を供給しているようです。どんな助けにも大いに感謝されます

答えて

1

ビューでPOSTデータ(request.POST)を探していて、request.GETではなく、あなたのテストでself.client.post(url, data)を使用してください。

私もここで指定したテンプレートに合わせてビューをリファクタリングすることをお勧めしたい:https://docs.djangoproject.com/en/1.10/topics/forms/#the-view

私はあなたのテストがself.client.getにデータを渡す方法で少し混乱しています。フォームに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

関連する問題