UNIT TEST- Django DRF - Как вызывать методы в ModelViewSets (избежать ошибки 404)
Я пишу код модульного тестирования для наборов представлений. Я часто сталкиваюсь с проблемой вызова url для доступа к моим методам. вот, views.py
class AppraisalEmployeeAPI(viewsets.ViewSet):
def get_permissions(self):
if self.action in ['retrieve']:
self.permission_classes = [IsOwnerPermission | IsHODPermission | IsHRUser |
IsManagementUser]
elif self.action in ['list']:
self.permission_classes = [IsHRUser | IsManagementUser]
return super(self.__class__, self).get_permissions()
def list(self, request):
# code
return obj
def retrieve(self, request):
#code
return obj
urls.py
router = routers.DefaultRouter()
router.register('appraisal', AppraisalAPI)
router.register(r'employee', AppraisalEmployeeAPI, basename='employee')
urlpatterns = [
path('', include(router.urls)),
]
test.py
url = reverse('employee-list')
self.client = Client(HTTP_AUTHORIZATION='Token ' + token.key)
resp1 = self.client.get(url, format='json')
self.assertEqual(resp1.status_code, 200)
Здесь я получил ответ 404 страница не найдена. Я не знаю, как подойти к наборам просмотров, используя url роутеры. Жду помощи по вышеуказанной проблеме и как подойти к наборам просмотров и маршрутизаторам урлов.
У меня есть решение. url = reverse('empoloyee-list'). employee -> должно быть базовым именем. Если наша функция списка имеет параметры запроса, мы должны передать параметры, как показано ниже,
url = reverse('employees-list')
self.client = Client(HTTP_AUTHORIZATION='Token ' + token.key)
resp1 = self.client.get(url, {'appraisal_id': pks1.id,
'employee_type': pks2.employee_type,
'organization_id': 1,
'state': 'employee',
'status': 'Pending'
}, format='json')
self.assertEqual(resp1.status_code, 200)
Теперь он работает нормально.