如何使用client.post()测试django注销?

时间:2017-10-28 13:43:47

标签: python django testing

我想测试我的用户是否正确注销。我可以登录。我尝试以相同的方式登录,但是,测试失败了。我无法弄清楚原因。

为什么这个测试失败了?

def test_user_can_login_and_logout(self):
    response = self.client.post('/login/', {'username': 'login', 'password': 'pass'})
    user = auth.get_user(self.client)
    self.assertEqual(user.is_authenticated(), True)   # This works fine
    self.client.post('/logout/')
    self.assertEqual(user.is_authenticated(), False)  # This fails.

我的urls.py

from django.conf.urls import url
from django.contrib.auth import views as auth_views

urlpatterns = [
        (...)
        url(r'^login/$', auth_views.login, {'template_name': 'home/login.html'}, name='login'),
        url(r'^logout/$', auth_views.logout, name='logout'),
        (...)
        ]

问题我跳过了负责在数据库中创建测试用户的代码。

1 个答案:

答案 0 :(得分:0)

因为帖子将修改用户对象的另一个副本。注销后尝试再次获取用户实例。

此外,请确保您对帖子的回复进行资产处理,以便确认帖子是否成功。