Запрошенный Django URL не найден на этом сервере в TestClass - PullRequest
0 голосов
/ 08 июня 2018

Мой TestClass выглядит следующим образом:

from django.test import TestCase, Client

class TestGetSomething(TestCase):
    def test_get_first_url(self):
        path = "some/long/path"
        client = Client()
        response = client.get(path=path)
        self.assertEqual(response.status_code, 200)

Но assertEquals вызывает исключение, 404 != 200.
Когда я писал print(response.__dict__), я отметил запрос на следующие поля:

'_closable_objects': [<WSGIRequest: GET 'somelong/path'>]
'request': {'PATH_INFO': 'some/long/path', 'REQUEST_METHOD': 'GET', 'SERVER_PORT': '80', 'wsgi.url_scheme': 'http', 'QUERY_STRING': ''}
'templates': [<django.template.base.Template object at 0x7f4b33ac17f0>], 'context': [{'True': True, 'False': False, 'None': None}, {'request_path': '/somelong/path/', 'exception': 'Resolver404'}]  

Как видите, часть путей не имеет косой черты между 'some' и 'long'
Когда я пытаюсь получить страницу по URL-адресу вручную (с помощью браузера), все идет хорошо
В моем приложении Django я не использую ничего, кроме Model и ModelAdmin.Даже urls.py ясен.
Теперь всем, как я могу это исправить?
Любой дополнительный код, который я добавлю, если это необходимо.

1 Ответ

0 голосов
/ 08 июня 2018

Пути должны начинаться с косой черты /.На самом деле в вашем браузере это ничем не отличается, так как если вы пишете localhost:8000/some/long/path, то первая косая черта просто является частью path.Кроме того, браузер обычно «исправляет» URL-адрес, например, example.com - example.com/.

. Таким образом, вам нужно написать его следующим образом:

class TestGetSomething(TestCase):

    def test_get_first_url(self):
        # start with a slash
        path = "<b>/</b>some/long/path"
        client = Client()
        response = client.get(path=path)
        self.assertEqual(response.status_code, 200)
...