我在Django项目中取得了一些进展并决定了单元测试是一个好主意。我试图围绕一个视图编写一个简单的单元测试,但我从响应中得到<h1>Not Found</h1><p>The requested URL /index was not found on this server.</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错误?
答案 0 :(得分:4)
丹尼尔罗斯曼指出,你不能直接在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)
这通常是我在测试套件中所做的,因为我更喜欢在路径上使用模式名称。
答案 1 :(得分:1)
您将网址格式名称传递给client.get()
,而不是实际路径。你需要传递实际的索引路径,根据那个urlconf - “/".