Django测试,登录后仍获得响应302,预计为200

时间:2019-09-27 16:07:58

标签: django django-testing

我正在测试Django应用程序登录部分。 我的工作流程是client.get('/ run / experiment / 1')->响应302,重定向到登录页面-> client.post('loginpage',{'username':'tester','password':'测试人员'})-> client.get('/ run / experiment / 1')->响应200。 我已经在shell中测试了此流程(逐行键入并执行命令行),并且按预期工作。 但是,当我编写测试文件时,即使在发布登录名之后,尝试client.get时,状态仍然为302。 这是我的代码:

from django.test import TestCase, Client

class TestRunRequireLogin(TestCase):
    def setUp(self):
        self.client = Client()

    def test_rerun_not_login(self):
        response = self.client.get('/experiment/1')
        self.assertEqual(response.status_code, 302)

    def test_rerun_login(self):
        self.client.post('/accounts/login/?next=/run/experiment/1', {'username': 'tester', 'password': 'tester'})
        response = self.client.get('/experiment/1')
        self.assertEqual(response.status_code, 200)

所以我的问题是何时在test_rerun_login中,为什么登录后仍然得到302

2 个答案:

答案 0 :(得分:1)

您有用户吗?您是否具有用户名tester和密码tester的用户?如果是这样,则需要在测试用例中创建它们。

将视图发布到此处可能会很方便。您可以打印表格吗?错误?您可能会在这里找到答案。

答案 1 :(得分:0)

对空数据库运行测试。您需要使用setUp方法创建用户。