Filterset_class не работает при вызове представления из теста

У меня есть вид метода drf:

    @action(detail=False, methods=["get"], filterset_class=None)
    def count(self, request, *args, **kwargs):
        ...

и, конечно, есть filterset_class, определенный на уровне класса. Когда я вызываю эту конечную точку из postman, это переопределение filterset_class работает, но когда я вызываю ее из тестов, переопределение не работает. Я использую APIRequestFactory для выполнения запроса из теста, как

factory = APIRequestFactory(email=user.email)
view = NotificationsMessagesView.as_view({"get": "count"})
response = view(request)
result = response.render()
assert result.data["count"] == 1

Мои версии:

Django = "3.2"
djangorestframework = "3.12.4"
django-filter = "22.1"

Может ли кто-нибудь помочь мне? Я пытаюсь найти багрепорты, но ничего не нахожу.

Я думаю, что переопределение filterset_class должно применяться, когда представление запрашивается из тестов.

В вашей тестовой установке отсутствует включение класса filterset в объект request при прямом вызове представления. Вам необходимо убедиться, что представление правильно инициализируется с необходимым контекстом в APIRequestFactory

    factory = APIRequestFactory()
    user = User.objects.create_user(email='abc@exp.com')
    
    # Create a request and force authenticate the user
    request = factory.get('/endpoint')
    force_authenticate(request, user=user) # sets user in request context
    view = NotificationsMessagesView.as_view({'get': 'count'})
    response = view(request)
    result = response.render()
    assert result.data["count"] == 1
Вернуться на верх