Django testcase для API logout с миксином LoginRequired, но для анонимного пользователя он перенаправляет на API login с параметром ?next=

Но что если я хочу проверить без логина. Например, у меня есть один api logout, который имеет LoginRequired mixin, я хочу проверить, что любой человек не может нажать logout, если он не вошел в систему. Поэтому я создал тесткейс, как показано ниже.

@pytest.mark.django_db
def test_user_logout_logged_in_user(self, client):
    url = reverse('logout')
    response = client.get(url)
    assert response.status_code == 302
    assertRedirects(response, reverse('login'))

но я получил эту ошибку, AssertionError: '/auth/login-view/?next=%2Fauth%2Flogout-view%2F' != '/auth/login-view/'

Значит, я получаю ?next={что-то для после входа в api}.

Как проверить, что перенаправленный api является login api.

Мой logout api выглядит следующим образом:

class LogoutView(LoginRequiredMixin, View):
"""
description: This is user logout view.
GET request will log out user and redirects to home page.
"""
def get(self, request):
    return LogoutService.logout_user(request=request)


class LogoutService:
@staticmethod
def logout_user(request):
    logout(request)
    messages.success(request, ACCOUNT_LOGOUT_SUCCESS)
    return redirect('home')

Тест Django для страницы, которая перенаправляет

Я пробовал этот ответ, но он предназначен для зарегистрированного пользователя. Я хочу протестировать для не аутентифицированного пользователя.

Чтобы проверить, что представление перенаправляет с параметром "next" правильно, необходимо добавить параметр next get в URL логина при тестировании

@pytest.mark.django_db
def test_login_required_redirect(self, client):
    url = reverse('someview')
    response = client.get(url)
    assertRedirects(response, f"{reverse('login')}?next={url}")

Не используйте LoginRequiredMixin для представления выхода из системы, вы установите его таким образом, и это приведет к тому, что пользователь мгновенно выйдет из системы после входа - обработайте перенаправление вручную в вашем представлении

class LogoutView(View):
    def get(self, request):
        if not request.user.is_authenticated:
            return redirect('login')
        return LogoutService.logout_user(request=request)
Вернуться на верх