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)

Теперь он работает нормально.

Вернуться на верх