测试受保护的视图 - 处理PermissionDenied响应

问题描述 投票:0回答:1

我正在尝试测试受保护的视图。未经身份验证的用户将重定向到登录页面。当我运行测试时,它会引发django.cose.exceptions.PermissionDenied,这是正常的,但是如何在不出现故障的情况下编写它,如何测试重定向是否正确?

这就是我所做的。


class TestProtectedRegistrationListView:
    """
    Verify registration views are protected from unauthenticated access.
    """

    def test_access_url(
        self, user: settings.AUTH_USER_MODEL, request_factory: RequestFactory
    ):
        view = RegistrationListView.as_view()
        request = request_factory.get("/admin_staff/registrations")
        request.user = user
        resp = view(request)
        assert resp == PermissionDenied

django testing pytest
1个回答
0
投票

以下是感兴趣的解决方案(@wencakisa正确建议):


def test_authenticated_non_staff(self, rf):
    req = rf.get(reverse("dashboard.staff:lang-create"))
    user = UserFactory()
    assert False is user.is_staff
    req.user = user

    with pytest.raises(PermissionDenied):
        views.LangCreateView.as_view()(req)

对于回忆和回答我自己的愚蠢评论,测试响应status_code没有任何意义,因为我们提出了例外异常。

© www.soinside.com 2019 - 2024. All rights reserved.