Я создал несколько тестов для своих просмотров раньше. Нравится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 и решить эту проблему, но для меня это плохо, поскольку я изобретаю колесо. Кроме того, я мог бы забыть и о некоторых случаях.