Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django测试,登录后仍然得到响应302,预期为200_Django_Django Testing - Fatal编程技术网

Django测试,登录后仍然得到响应302,预期为200

Django测试,登录后仍然得到响应302,预期为200,django,django-testing,Django,Django Testing,我正在测试django应用程序登录部分。 我的工作流程是client.get('/run/experience/1')->响应302,重定向到登录页面->client.post('loginpage',{'username':'tester','password':'tester'})->client.get('/run/experience/1')->响应200。 我已经在shell中测试了这个流(逐行输入并执行命令),它按照预期工作。 但是,当我编写测试文件时,即使在发布登录后,我在尝试cl

我正在测试django应用程序登录部分。 我的工作流程是client.get('/run/experience/1')->响应302,重定向到登录页面->client.post('loginpage',{'username':'tester','password':'tester'})->client.get('/run/experience/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)

所以我的问题是,在测试重新运行登录时,为什么登录后我仍然得到302?您是否有用户名为
tester
且密码为
tester
的用户?如果是这样,您需要在测试用例中创建它们


将您的视图发布到那里可能很方便。您可以打印表单吗。错误?您可能会在那里找到答案。

测试是针对空数据库运行的。您需要在
设置
方法中创建一个用户。

所以我的问题是,在测试重新运行登录时,为什么登录后仍然得到302。我有一个名为tester和password tester的用户,我在shell中的测试按预期工作。>>>从django.test导入Client>>>Client=Client()>>>response=Client.get('/run/experience/1')>>>response.status\代码中,我在这里得到了302,>>>Client.post('/accounts/login/?next=/run/experience/1',{'username':'tester','password':'tester})>>response=Client.get('/run/experience/1')>>response.status\代码,我得到了200。但这在测试文件中不起作用。测试数据库与shell中使用的数据库不同。它是空的,我明白了,现在可以用了。我在setUp()中创建了一个用户,并使用新添加的凭据,在client.post登录之后,我的client.get给了我200的响应。谢谢是的,我发现我需要在setUp()中创建一个用户,并使用这个临时用户登录我的测试。谢谢