Python django:assertRedirect清除会话数据django

Python django:assertRedirect清除会话数据django,python,django,python-3.x,Python,Django,Python 3.x,我是Django的初学者,正在编写一个简单的会计应用程序。现在我已经开始为这个应用程序编写一些测试用例 我的应用程序中有一个个人资料表单,允许用户编辑个人资料。如果数据已成功更改,我将调用HttpResponseRedirect到index页面 我使用assertRedirect方法来确保当表单数据正确时,页面被重定向到索引页面 但是当我在TestCase类中调用这个方法时,我看到它清除了会话数据,用户不再登录 以下是我的代码的一些部分: class TestEditProfile(TestCa

我是Django的初学者,正在编写一个简单的会计应用程序。现在我已经开始为这个应用程序编写一些测试用例

我的应用程序中有一个
个人资料
表单,允许用户编辑个人资料。如果数据已成功更改,我将调用
HttpResponseRedirect
index
页面

我使用
assertRedirect
方法来确保当表单数据正确时,页面被重定向到
索引
页面

但是当我在
TestCase
类中调用这个方法时,我看到它清除了会话数据,用户不再登录

以下是我的代码的一些部分:

class TestEditProfile(TestCase):

    def test_change_password(self):
        response = self.client.get(reverse('account:profile'))
        self.assertEqual(response.status_code, 200)
        self.assertContains(response, 'First name')
        data = self.get_user_data()
        response = self.client.post(reverse('account:profile'), data=data)
        self.assertRedirects(response, reverse('account:index'))
当我调试我的程序时,我看到调用
self.assertRedirects
后,用户会话数据将被清除,用户不再登录,因此如果我想
post
一些请求到
profile
页面,它会忽略它,因为
profile
视图是
login\u必需的

我的代码中有问题吗

非常感谢

更新:我使用
pydev调试器深入查看了代码,并意识到此方法会清除用户会话数据:

if fetch_redirect_response:
    redirect_response = response.client.get(path, QueryDict(query),
                                                secure=(scheme == 'https'))
源代码是文件testcase.py的第320行


在运行这一行之前,
self.client.session.\u session
大小为3,并且有键:
“auth\u user\u backend”(4413833840)
“auth\u user\u hash”(4411636976)
“auth\u user\u id”(4408855216)
,但在运行这一行之后,
session.session.\u session被完全清除

抱歉,您是手动调用该方法还是通过
python manage.py test
调用该方法?您是如何看待这一点的?在同一个方法中是否有更多的代码,或者是一个单独的测试方法?我使用
python manage.py test
。代码中还有一些东西,但并不重要,因为当我使用pycharm调试器调试代码时,我意识到在调用上述方法后,用户会话数据将被清除@daniel roseman@irvindSorry,但是您是手动调用该方法还是通过
python manage.py test
调用该方法?您是如何看待这一点的?在同一个方法中是否有更多的代码,或者是一个单独的测试方法?我使用
python manage.py test
。代码中还有一些东西,但并不重要,因为当我使用pycharm调试器调试代码时,我意识到在调用上述方法后,用户会话数据将被清除@丹尼尔·罗斯曼@irvind