我正在嘗試使用Django 1.4的測試框架自動化404頁面測試。如何用django測試框架測試404 NOT FOUND?
如果我在運行開發服務器的瀏覽器地址欄中打印127.0.0.1:8000/something/really/weird/
,我看到一個404頁面,並顯示正確的「404 NOT FOUND」狀態(如螢火蟲節目)。
但是,如果我嘗試使用此代碼來進行測試:
from django.test import TestCase
class Sample404TestCase(TestCase):
def test_wrong_uri_returns_404(self):
response = self.client.get('something/really/weird/')
self.assertEqual(response.status_code, 404)
測試失敗,此輸出:
$./manage.py test main
Creating test database for alias 'default'...
.F
======================================================================
FAIL: test_wrong_uri_returns_404 (main.tests.Sample404TestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File ".../main/tests.py", line 12, in test_wrong_uri_returns_404
self.assertEqual(response.status_code, 404)
*AssertionError: 200 != 404*
----------------------------------------------------------------------
Ran 2 tests in 0.031s
FAILED (failures=1)
Destroying test database for alias 'default'...
我在這裏獲得200碼嚴重意外。任何人都有任何想法,爲什麼在這種情況下發生?
更新:
這裏存在urls.py:http://pastebin.com/DikAVa8T 和實際失敗的測試是:
def test_wrong_uri_returns_404(self):
response = self.client.get('/something/really/weird/')
self.assertEqual(response.status_code, 404)
一切都在發生項目https://github.com/gbezyuk/django-app-skeleton
你的urls.py的外觀如何?下面的回答者對於領先的'/'是正確的,但即使如此,你也不應該爲無意義的URL獲得200。 – Nils
我已更新問題描述。 確切的文件在這裏:https://github.com/gbezyuk/django-app-skeleton/blob/master/main/urls.py – gbezyuk