简单的Django单元测试返回404 - 正确的设置流程是什么?
我在做Django项目的时候,觉得写单元测试是个好主意。现在我想给一个视图写个简单的单元测试,但我收到的响应是<h1>未找到</h1><p>请求的URL /index 在这个服务器上未找到。</p>
。这是什么原因呢?
这是我的单元测试代码……
from django.test import TestCase
class BookerIndexTests(TestCase):
def test_anonymous_request(self):
response = self.client.get('booker:index')
self.assertEqual(response.status_code, 200)
在我的urls.py
文件里,我有这样一行代码来处理我的首页:url(r'^$', views.index, name='index'),
我是不是漏掉了什么设置步骤?为什么这个基本的单元测试会出现404错误呢?
2 个回答
1
你传给 client.get()
的是一个网址模式的名字,而不是一个实际的路径。你需要传递实际的索引路径,根据那个网址配置,它是“/”。
4
正如Daniel Roseman所说,你不能直接在client.get()
中使用模式名称。如果你想用模式名称而不是直接使用路径,可以使用reverse
。你的代码可以像这样:
from django.test import TestCase
from django.core.urlresolvers import reverse
class BookerIndexTests(TestCase):
def test_anonymous_request(self):
response = self.client.get(reverse('booker:index'))
self.assertEqual(response.status_code, 200)
这通常是我在测试套件中做的,因为我更喜欢使用模式名称,而不是直接使用路径。