测试许可被拒绝没有被捕获

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

如果没有适当的权限可以访问某个URL,我会尝试使用unittests进行检查。

当我写测试时,一切正常。我不知道在Django更新之后是否开始出现错误,因为我在更新后没有检查测试,只是开始编写失败的新测试。所以我检查了我现在失败的旧测试。

class MemberTestMethods(TestCase):
    def setUp(self):
        # Create user
        user = User.objects.create_user('temp', '[email protected]', 'temppass')
        user.first_name = 'temp_first'
        user.last_name = 'temp_last'
        user.save()

        # login with user
        self.client.login(username='temp', password='temppass')

        # Create member
        member = Member.objects.create(salutation=Member.MR, first_name='Temp', last_name='Temp')
        member.save()

    def test_member_list_permission(self):
        "User should only access member list if view permission is set"

        user = User.objects.get(username='temp')

        response = self.client.get(reverse('members:list'))
        self.assertEqual(response.status_code, 403)

        user.user_permissions.add(Permission.objects.get(codename='view_member'))

        response = self.client.get(reverse('members:list'))
        self.assertEqual(response.status_code, 200) 

运行python manage.py test后,我收到以下错误

Creating test database for alias 'default'...
System check identified no issues (0 silenced).
WARNING:django.request:Forbidden (Permission denied): /de/reporting/
Traceback (most recent call last):
File "/home/***/.virtualenvs/pyVerein/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
File "/home/***/.virtualenvs/pyVerein/lib/python3.6/site-packages/django/core/handlers/base.py", line 126, in _get_response
    response = self.process_exception_by_middleware(e, request)
File "/home/***/.virtualenvs/pyVerein/lib/python3.6/site-packages/django/core/handlers/base.py", line 124, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/***/.virtualenvs/pyVerein/lib/python3.6/site-packages/django/views/generic/base.py", line 68, in view
    return self.dispatch(request, *args, **kwargs)
File "/home/***/.virtualenvs/pyVerein/lib/python3.6/site-packages/django/contrib/auth/mixins.py", line 52, in dispatch
    return super().dispatch(request, *args, **kwargs)
File "/home/***/.virtualenvs/pyVerein/lib/python3.6/site-packages/django/contrib/auth/mixins.py", line 84, in dispatch
    return self.handle_no_permission()
File "/home/***/.virtualenvs/pyVerein/lib/python3.6/site-packages/django/contrib/auth/mixins.py", line 43, in handle_no_permission
    raise PermissionDenied(self.get_permission_denied_message())
django.core.exceptions.PermissionDenied

以前测试运行成功,同时检查HTTP-Code 403,就像在文档中描述的那样(https://docs.djangoproject.com/en/2.1/topics/testing/tools/#exceptions

完整的Sourceode可在Github(https://github.com/HamburgerJungeJr/pyVerein/tree/pyReportJasper/pyVerein/members)获得

我错过了Django-Test系统的变化吗?

django
1个回答
0
投票

我刚刚找到了解决方案。 PyReportJasper-package将全局日志记录级别设置为INFO。更改后,错误消失了。

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