Python 的测试驱动开发——第 6 章
Test-Driven Development with Python -- chapter 6
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')
这是用于测试 post 视图 new_list 响应的方法。当我使用 HttpRequest() 时它工作正常,当我尝试使用内置客户端 post(注释行)数据而不是 HttpRequest 时它抛出错误。
错误:
======================================================================
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
----------------------------------------------------------------------
我认为我使用客户端 post 数据的方式存在问题。这是我正在阅读的教科书部分的 link。感谢任何帮助。
Django -- 1.9.5,
python -- 3.5
我猜你的视图 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')
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')
这是用于测试 post 视图 new_list 响应的方法。当我使用 HttpRequest() 时它工作正常,当我尝试使用内置客户端 post(注释行)数据而不是 HttpRequest 时它抛出错误。
错误:
======================================================================
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
----------------------------------------------------------------------
我认为我使用客户端 post 数据的方式存在问题。这是我正在阅读的教科书部分的 link。感谢任何帮助。
Django -- 1.9.5, python -- 3.5
我猜你的视图 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')