在 DRF 中测试 API 端点 - 按名称访问特定的 url?
Testing API endpoint in DRF - accessing the specific url by name?
我有一个具有以下结构的项目:
- 项目
- app1
- app2
每个应用程序都在使用 django rest 框架。
我的项目 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
文件中,我设置了以下路由:
router = routers.DefaultRouter()
router.register(r'myspecificmodel',
MySpecificModelViewSet, base_name='MySpecificModels')
router.register(r'myothermodels', MyOtherModelsViewSet,
base_name='MyOtherModels')
我在 app1/tests
目录中有一个 test_api.py
文件,如下所示:
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
对其进行测试,因为这可能会更容易一些?
跟随重定向链直到结束:
response = self.client.get(url, follow=True)
我有一个具有以下结构的项目:
- 项目
- app1
- app2
每个应用程序都在使用 django rest 框架。
我的项目 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
文件中,我设置了以下路由:
router = routers.DefaultRouter()
router.register(r'myspecificmodel',
MySpecificModelViewSet, base_name='MySpecificModels')
router.register(r'myothermodels', MyOtherModelsViewSet,
base_name='MyOtherModels')
我在 app1/tests
目录中有一个 test_api.py
文件,如下所示:
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
对其进行测试,因为这可能会更容易一些?
跟随重定向链直到结束:
response = self.client.get(url, follow=True)