测试失败:
class LoginTest(TestCase):
def test_login(self):
self.user = User(username='test', password='test')
self.user.save()
login = self.client.login(username='test', password='test')
self.assertTrue(login)
但这通过了:
class LoginTest(TestCase):
def test_login(self):
self.user = User.objects.create_user(username='test', password='test')
login = self.client.login(username='test', password='test')
self.assertTrue(login)
谁能解释我为什么?在TestCase类之外,它可以工作。
编辑:它正在TestCase之外工作,因为我正在尝试使用一个现有的用户。参见falsetru答案。
如果您不使用User.objects.create_user
,密码将按原样保存(不加密)。
check_password
(由login
,,authenticate
...依次使用)期望密码已加密。
如果不使用User.objects.create_user
以下代码,则最终代码将失败:
>>> from django.test import Client
>>> c = Client()
>>> user = User(username='test', password='test')
>>> user.save()
>>> c.login(username='test', password='test')
False
>>> from django.contrib.auth import authenticate
>>> authenticate(username='test', password='test') # => None
>>>
使用User.objects.create_user
!
>>> user2 = User.objects.create_user(username='test2', password='test')
>>> c.login(username='test2', password='test')
True
>>> authenticate(username='test2', password='test')
<User: test2>
>>> user2.check_password('test')
True
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句