我正在尝试为 django allauth 编写一个登录测试,但是尽管该应用程序工作正常并且我可以登录,但当我编写登录测试时,它无法正确登录,并且由于验证错误“ Response didn't redirect as expected: Response code was 200 (expected 302)
302 != 200e-”而出现断言错误您指定的邮件地址和/或密码不正确'
(目前 test_login 失败,但其他两个测试通过)
在这里查看 django all-auth 中的测试: https: //github.com/pennersr/django-allauth/blob/master/allauth/account/tests.py 我可以看到他们在测试登录时还创建了一个 EmailAddress 对象 -我不确定为什么或者是否需要这样做?
class TestLoginView(TestCase):
def setUp(self):
self.client = Client()
self.username = "test@test.com"
self.password = "password"
user = get_user_model().objects.create_user(self.username, self.password)
# EmailAddress.objects.create(user=user, email=self.username, primary=True, verified=True)
def test_login(self):
response = self.client.post(reverse(
settings.LOGIN_URL), {"login": self.username, "password": self.password}
)
self.assertRedirects(response, settings.LOGIN_REDIRECT_URL, fetch_redirect_response=False)
def test_wrong_login(self):
response = self.client.post(reverse(
settings.LOGIN_URL), {"login": "bad@login.com", "password": "wrong"}
)
validation_error = 'The e-mail address and/or password you specified are not correct'
assert validation_error in response.content.decode('utf-8')
def test_redirect_when_authenticated(self):
self.client.force_login(self.user)
resp = self.client.get(reverse(settings.LOGIN_URL))
url = settings.LOGIN_REDIRECT_URL + '/' + self.username + '/' + 'detail'
self.assertRedirects(resp, url, fetch_redirect_response=False)
Run Code Online (Sandbox Code Playgroud)
将用户创建更改为使用关键字参数修复了该问题,即:
self.user = get_user_model().objects.create_user(username=self.username, password=self.password)
Run Code Online (Sandbox Code Playgroud)
或者,您也可以放弃单独的电子邮件模型创建,然后执行以下操作
get_user_model().objects.create_user(username=username, email=username, password=password)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1453 次 |
| 最近记录: |