加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 具有版本控制的DRF测试视图:版本化URL检索

发布时间:2020-12-20 13:11:59 所属栏目:Python 来源:网络整理
导读:我之前为我的观点创建了一些测试.像那样 class TestUserRegistrationViewUserCreate(APITestCase):def setUp(self): self.factory = APIRequestFactory()def test_create_user(self): data = { 'phone_number': '+79513332211','password': 'qwerty' } reque
我之前为我的观点创建了一些测试.像那样

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'
}

现在我需要重写我的视图单元测试以支持版本控制.

这个问题是为了通过反向获取版本化的url,我必须使用

from rest_framework.reverse import reverse

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

就像在docs.

但是我在测试中没有请求对象,因为我自己创建了一个请求对象并且需要使用版本化的url.

我该怎么办?

附:我可以在不使用DRF的情况下实现版本控制,使用视图装饰器和一些utils函数来解决这个问题,但是当我重新发明轮子时,这对我来说感觉不好.另外,我也可能会忘记一些边缘情况.

解决方法

我在测试用例中使用了反向(‘< VERSION>:< VIEW_NAME>‘).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读