之前我为我的观点创建了一些测试。像那样
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版本之前,一切都很顺利。
DRF支持本地版本http://www.django-rest-framework.org/api-guide/versioning/ 所以我只是使用它并使用
将基于命名空间的版本控制添加到我的API中REST_FRAMEWORK = {
'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.NamespaceVersioning'
}
现在我需要重写我的视图单元测试以支持版本控制。
这个问题是为了通过reverse
获取版本化网址,我必须使用
from rest_framework.reverse import reverse
reverse('bookings-list', request=request)
就像在docs中一样。
但是我在测试中没有request
个对象,因为我自己制作了一个和版本化的网址。
我该怎么办?
P.S。我可以在不使用DRF的情况下实现版本控制,使用视图装饰器和几个utils函数来解决这个问题,但是当我重新发明轮子时,这对我来说感觉不好。另外,我也可能会忘记一些边缘情况。
答案 0 :(得分:0)
我在测试用例中使用reverse('<VERSION>:<VIEW_NAME>')
。
答案 1 :(得分:0)
太晚了,但是对于那些有类似问题的人,可以在调用视图时通过版本-
response = CustomUserAPIView.as_view()(request, version='1.0')