2014-08-31 69 views
0

我是我的Django项目,并决定单元测试是一个好主意。我试图围绕一个视图编写一个简单的单元测试,但是我得到了来自响应的<h1>Not Found</h1><p>The requested URL /index was not found on this server.</p>。为什么会发生?简单的django单元测试给404 - 什么是正确的设置程序?

这里是我的单元测试..

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错误?

回答

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) 

这通常是我在我的测试套件,这样做,因为我喜欢在路径上使用的模式名称。

1

您传递的网址格式名称为client.get(),而不是实际路径。您需要传递实际的索引路径,即根据urlconf - “/”。

+0

谢谢。对于传递URL模式名称是否更友好,因为如果将来实际的url路径发生变化,我们将不必修改所有的测试。 – Jim 2014-08-31 21:27:39

相关问题