@login_required视图装饰器仅在Django测试中接受超级用户

时间:2018-07-26 18:38:58

标签: python django unit-testing decorator

在使用TestCase的Django单元测试中,我想将数据发布到具有@login_required装饰器的视图中。

test_views.py

class ExportQuestionnaireTest(TestCase):
    def setUp(self):
        self.user = User.objects.create_user(
            username='jose', email='jose@test.com', password='passwd'
        )

        # self.user.is_superuser = True
        # self.user.save()

        self.client.login(username=self.user.username, password='passwd')

    def test_same_questionnaire_used_in_different_steps_return_correct_content(self):
       data = {
           'per_participant': 'on',
           'action': 'run'
       }

       response = self.client.post(reverse('export_view'), data)

views.py

@login_required
def export_view(request, template_name="export/export_data.html"):
    export_form = ExportForm()
    ...

test_views.py中可以看到,我正在创建一个用户并通过self.client.login登录,然后发布到该视图。运行测试时,请求无法实现视图。

但是当我取消注释test_views.py中的两行(即,使self.user为超级用户)时,请求将获得视图(验证使用Pycharm进行调试)。

可能是什么原因?

0 个答案:

没有答案