使用凭据作为超级用户Django 1.9,Python 3.5进行测试登录

时间:2016-03-22 19:23:55

标签: python django testing

我一直尝试使用Django 1.9和Python 3.5以超级用户身份登录测试驱动程序管理功能,但我的登录信息仍然失败。

这是测试。它总是在最后一个断言中返回false:

class TestAdmin(TestCase):
    def setUp(self):
        self.client = Client()
    def test_login(self):
        my_admin = User(username='user', email='user@email.com')
        my_admin.set_password('passphrase')
        my_admin.is_superuser=True
        my_admin.is_staff=True
        response = self.client.get('/admin/', follow=True)
        self.assertEqual(response.status_code, 200)
        self.assertTrue('Log in' in response.content.decode('utf-8'))
        loginresponse = self.client.login(username='user', email='user@email.com',
                                          password='passphrase')
        self.assertTrue(loginresponse)  

1 个答案:

答案 0 :(得分:2)

我认为你应该做my_admin.save()

您的.is_staff=True用户需要保存到在测试运行时创建的用户“数据库”中。使用以下脚本可以正常使用权限:

class TestAdmin(TestCase):

    def setUp(self):
        self.client = Client()
        self.my_admin = User(username='user', is_staff=True)
        my_admin.set_password('passphrase') # can't set above because of hashing
        my_admin.save() # needed to save to temporary test db
        response = self.client.get('/admin/', follow=True)
        loginresponse = self.client.login(username='user',password='passphrase')
        self.assertTrue(loginresponse) # should now return "true"