Тестирование конечной точки API в DRF - доступ к конкретному URL по имени? - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть проект со следующей структурой:

  • Проект
    • app1
    • app2

В каждом приложении используется django rest framework.

Файл моего проекта urls.py выглядит так:

import app1.rest_api

urlpatterns = [
    path('admin/', admin.site.urls),
    path('app2/', include('app2.urls')),
    path('app1/', include('app1.urls')),
    path('api/app1/', include(
        app1.rest_api.router.urls)),

В моем файле rest_api.py есть следующие настройки маршрутов:

router = routers.DefaultRouter()
router.register(r'myspecificmodel',
                MySpecificModelViewSet, base_name='MySpecificModels')
router.register(r'myothermodels', MyOtherModelsViewSet,
                base_name='MyOtherModels')

У меня есть файл test_api.py в каталоге app1/tests, который выглядит следующим образом:

from rest_framework import status
from rest_framework.test import APITestCase, APIClient


class URLTest(APITestCase):
    def setUp(self):
        self.client = APIClient()

    def test_url_returns_200(self):
        url = '/api/app1/myspecificmodels'
        response = self.client.get(url)
        # response = self.client.get(url, format='json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(len(response.data), 1)

Это дает мне 301 ResponsePermanentRedirect

Как мне лучше всего протестировать конечную точку API? Есть ли способ назвать маршрут и проверить его с помощью reverse, так как это может быть немного проще?

1 Ответ

1 голос
/ 24 апреля 2019

Следуйте по цепочке перенаправления до конца:

response = self.client.get(url, follow=True)

Ссылка: Инструменты тестирования, Отправка запросов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...