【发布时间】:2013-10-11 04:46:37
【问题描述】:
我有一个功能可以测试我的网址,如下所示:
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)
我的 URL 模式如下所示:
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
为什么我的测试认为它存在?
【问题讨论】:
-
这在很大程度上取决于
self.client.get中的代码,但是URLdoesntExist/,前面没有任何主机名,可能会与您的ISP“试图提供帮助”发生冲突。它的 DNS 服务器可能会将不存在的主机名doesntExist解析到它自己的搜索页面。 -
有趣。我试过做
end_point = 'http://127.0.0.1:8000/' + route并得到响应,但我仍然遇到同样的问题。我怎么能解决这个问题? -
print self.client.get('/doesntExist/').content打印什么? -
尝试将
'/'放在routes中所有网址的前面。 -
@AndreyNelubin 它为我提供了似乎是我的 Amazon S3 存储桶的标记
标签: python django django-testing