Django TestCase 对象没有 'session' 属性
我正在学习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' object has no attribute 'session',意思是说我用的字符串对象没有'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)
但系统提示我没有叫做login的东西。
那正确的做法是什么呢?
2 个回答
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
来登录。你可以在文档中了解更多关于如何使用它的信息。
2
你不是对用户进行登录,而是对测试客户端的一个实例进行登录。
self.client.login(username=self.email, password=self.password)