Домашняя страница тестирования в Django, возвращающая 404

Написание теста Django для проверки правильности загрузки домашней страницы. Домашняя страница моего сайта не '/', а скорее '/home/', а '/' и '/home' фактически перенаправляются на '/home/'

поэтому для этого я написал следующий набор тестов:

tests_main.py

from django.test import TestCase


class homepage_redirects(TestCase):
 def test_redirect_homepage(self):
 r1 = self.client.get('/')
 r2 = self.client.get('/home')
 self.assertEqual(r1.status_code, 301)
 self.assertEqual(r1.url, '/home/')
 self.assertEqual(r2.status_code, 301)
 self.assertEqual(r2.url, '/home/')


class homepage_loads(TestCase):
 def test_homepage(self):
 r = self.client.get('/home/')
 self.assertEqual(r.status_code, 200)

По какой-то причине тесты homepage_redirects не сбой, но сбой на homepage_loads со следующей трассировкой.

Выслеживать

self.assertEqual(r.status_code, 200)
AssertionError: 404 != 200

Как ни странно, если я перейду к оболочке django python, я должен получить код состояния 200.

Python Shell

In[1]: from django.test import Client

In[2]: c = Client()

In[3]: c.get('/home/')
Out[3]:

Что я делаю не так?

views.py

from django.shortcuts import render


def home_page(request):
 return render(request, 'app/home_page.html')

urls.py

from django.contrib import admin

urlpatterns = [
 path('admin/', admin.site.urls),
 path('home/', views.home_page),
]
1 ответ

urlpatterns = [
 path('admin/', admin.site.urls),
 path('home/', views.home_page),
]

вы можете добавить? в ваших URL-адресах. такие как

urlpatterns = [
 path(r'^admin/?', admin.site.urls),
 path(r'^home/?', views.home_page),
]

licensed under cc by-sa 3.0 with attribution.