我正在学习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)
但它声明我没有任何名为登录的内容。
这样做的正确方法是什么?
答案 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