2

Я создал несколько тестов для своих просмотров раньше. НравитсяDRF-тестирование просмотров с версией: версия поиска URL

class TestUserRegistrationViewUserCreate(APITestCase): 
def setUp(self): 
    self.factory = APIRequestFactory() 

def test_create_user(self): 
    data = { 
     'phone_number': '+79513332211', 
     'password': 'qwerty' 
    } 
    request = self.factory.post(reverse('user'), data=data) 
    response = CustomUserAPIView.as_view()(request) 
    self.assertEqual(response.status_code, status.HTTP_201_CREATED) 

Все отлично работает, пока меня не попросят добавить версию API.

ФПИ поддерживает управление версиями изначально http://www.django-rest-framework.org/api-guide/versioning/ поэтому я просто пошел с ним и добавил пространство имен на основе управления версий для моего API, с

REST_FRAMEWORK = { 
    'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.NamespaceVersioning' 
} 

Теперь мне нужно переписать мои взгляды модульных тестов для поддержки управления версий.

Эта проблема заключается в том, чтобы получить версионируются URL через reverse, я должен использовать

from rest_framework.reverse import reverse 

reverse('bookings-list', request=request) 

как в docs.

Но в тестах нет объектов request, так как я делаю один и исправленный URL-адрес, необходимый для его создания.

Что мне делать?

P.S. Я могу реализовать управление версиями без использования DRF, с декоратором и несколькими функциями utils и решить эту проблему, но для меня это плохо, поскольку я изобретаю колесо. Кроме того, я мог бы забыть и о некоторых случаях.

ответ

0

В моих тестовых случаях я использую reverse('<VERSION>:<VIEW_NAME>').