Django TestCase对象没有属性'session'

时间:2014-09-09 15:56:37

标签: python django

我正在学习Django的测试。我需要首先创建用户并登录才能测试任何东西。我试过以下......

class ProjectTest(TestCase):
    def setUp(self):
        self.email = 'test@test.com'
        self.password = 'test'
        self.new_user = AppUser.objects.create_superuser(email=self.email, password=self.password)

        new_user = authenticate(username=self.email,
                                    password=self.password)

        login(request, new_user)
        self.assertEqual(login, True)

    def tearDown(self):
        self.new_user.delete()

给出了错误:AttributeError:'str'对象没有属性'session'

我也尝试过:

def setUp(self):
    self.email = 'test@test.com'
    self.password = 'test'        
    self.new_user = AppUser.objects.create_superuser(email=self.email, password=self.password)
    login = self.new_user.login(username=self.email, password=self.password)

但它声明我没有任何名为登录的内容。

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

您不会在用户上调用登录信息,而是在测试客户端的实例上调用它。

self.client.login(username=self.email, password=self.password)

答案 1 :(得分:1)

class ProjectTest(TestCase):

    def test_login_feature(self):
        user = User.objects.create_user(username='joe', password='pass')
        self.client.login(username='joe', password='pass')
        # client now authenticated and can access 
        # restricted views. 

所以这就是你要做的。创建用户并使用self.client.login您可以在documentation

中详细了解如何使用它