2016-04-14 6 views
0
def test_saving_a_POST_request(self): 

     request = HttpRequest() 
     request.method = "POST" 
     request.POST['item_text'] = "A new list item" 
     response = new_list(request) 
     # response = self.client.post('lists/new', {'item_text': "A new list item"}) 
     new_item = Item.objects.first() 
     self.assertEqual(Item.objects.count(), 1) 
     self.assertEqual(new_item.text, 'A new list item') 

これは、new_listビューのポストレスポンスをテストするためのメソッドです。 HttpRequest()を使用するとうまく動作し、HttpRequestではなくデータを投稿するためにinbuiltクライアントを使用しようとするとエラーがスローされます。Pythonによるテスト駆動開発 - 第6章

エラー:

====================================================================== 
FAIL: test_saving_a_POST_request (lists.tests.NewListTest) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "/Users/prabhath/PycharmProjects/superlists/lists/tests.py", line 95, in test_saving_a_POST_request 
    self.assertEqual(Item.objects.count(), 1) 
AssertionError: 0 != 1 

---------------------------------------------------------------------- 

私は私がデータをポストするために、クライアントを使用する方法に問題があると思います。これは私が読んでいた教科書のセクションのlinkです。どんな助けもありがとうございます。

ジャンゴ - 1.9.5、 のpython - 3.5

+0

エラーが発生した場合は、それが何であるかを明記する必要があります。 –

+1

クライアントコールで 'lists/new'の代わりに'/lists/new/'を使ってみてください(先頭のスラッシュに注意してください)? –

+0

@JoeyWilhelm私は、リストで始まり、url url(r '^ lists/new $'、views.new_list、name = 'new_list')で終わるURLを定義しました。しかし、私はそれが動作しませんでした。 – kiran6

答えて

3

私はあなたのビューのURLが正しく参照されていないことを推測します。あなたはおそらくDjangoに組み込まれているURL解決メソッドを、URLのハードコーディングではなくlists/newのように使いたいと思うでしょう。これにより、テストケースは次のようになります。

from django.core.urlresolvers import reverse_lazy 
from django.test import TestCase 

from .models import Item 


class ItemTestCase(TestCase): 

    def test_saving_a_POST_request(self): 
     response = self.client.post(reverse_lazy('new_list'), {'item_text': "A new list item"}) 
     new_item = Item.objects.first() 
     self.assertEqual(Item.objects.count(), 1) 
     self.assertEqual(new_item.text, 'A new list item') 
+0

これは問題を解決しました。 – kiran6

関連する問題