首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python进行测试驱动的开发-第6章

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

Stack Overflow用户
提问于 2016-04-14 17:16:43
回答 1查看 134关注 0票数 0
代码语言:javascript
复制
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视图的post响应的方法。当我使用HttpRequest()时,它工作得很好,当我试图使用内置客户端来发布(注释行)数据而不是HttpRequest时,它会引发错误。

错误:

代码语言:javascript
复制
======================================================================
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

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

我认为如何使用客户端发布数据存在问题。这是我正在读的教科书部分的链接。任何帮助都是非常感谢的。

Django -- 1.9.5,python - 3.5

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-14 18:22:40

我猜您的视图的URL没有被正确引用。您很可能希望使用Django的内置URL解析方法,而不是像您一样硬编码url,lists/new。这将使您的测试用例看起来如下所示:

代码语言:javascript
复制
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')
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36629799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档