测试URL - 不存在的URL返回200

时间:2013-10-04 08:45:19

标签: python django django-testing

我有一个测试我的URL的功能,如下所示:

def test_URLs(self):

    routes = [
    'about/',
    'archive/',
    'index/',
    'admin/',
    ''
    'doesntExist/'
    ]

    for route in routes:
        response = self.client.get(route)
        self.assertEqual(response.status_code, 200)  

和我的网址格式如下:

urlpatterns = patterns('',
    #CMS url
    url(r'^admin/', include(admin.site.urls)),
    url(r'^$', 'core.views.index'),
    url(r'^index/', 'core.views.index'),
    url(r'about/', 'core.views.about'),
    url(r'^archive/', 'core.views.archive'),
    url(r'^talks/(?P<slug>[\w\-]+)/$', 'core.views.getTalk'),

在我的test_URLs函数中,路径'doesntExist /'不存在,而是恰当。当我运行我的服务器并尝试访问doesntExist/时,我收到了日志消息

[04/Oct/2013 09:37:40] "GET /doesntExist/ HTTP/1.1" 404 2629

所以当我运行上述测试时,doesntExist/肯定不存在:

Creating test database for alias 'default'...
..
----------------------------------------------------------------------
Ran 2 tests in 0.017s

OK

为什么我的测试认为它存在?

1 个答案:

答案 0 :(得分:0)

我的问题是我使用的是名为Lockdown的应用。状态代码返回为200,因为它获取了登录HTML表单,无论用户以前是否登录过该URL,都会显示该表单。

无论何时进行测试,都不要使用锁定。