使用Python进行测试驱动开发 - 第6章

时间:2016-04-14 17:16:44

标签: python django tdd

i

这是用于测试new_list视图的post响应的方法。当我使用HttpRequest()时它工作正常,当我尝试使用内置客户端发布(注释行)数据而不是HttpRequest时,它会抛出错误。

错误:

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')

我认为我如何使用客户端发布数据存在问题。这是我正在阅读的教科书中的link部分。任何帮助表示赞赏。

Django - 1.9.5, python - 3.5

1 个答案:

答案 0 :(得分:3)

我猜您的视图网址未被正确引用。您很可能希望使用Django的内置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')