代码之家  ›  专栏  ›  技术社区  ›  Hanny

在DRF中测试API端点-按名称访问特定url?

  •  0
  • Hanny  · 技术社区  · 5 年前

    我有一个项目的结构如下:

      • 附录1
      • 附录2

    我的项目 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 文件I具有以下路由设置:

    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 回复  |  直到 5 年前
        1
  •  1
  •   Raydel Miranda    5 年前

    沿着重定向链一直走到最后:

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

    Test tools, Making requests