在使用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进行调试)。
可能是什么原因?