gpt4 book ai didi

python - Django 单元测试 - 客户端登录似乎不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 00:18:05 24 4
gpt4 key购买 nike

我一直在引用https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/Testing中的教程在进行我自己的单元测试时。我的单元测试代码如下:

from django.core.urlresolvers import reverse
from django.test import Client, TestCase
from django.contrib.auth.models import User

from companies.models import Company

class ContactViewTest(TestCase):

def setUp(self):
self.client = Client(HTTP_HOST='localhost:8000')

company = Company(name='Test')
company.save()

user = User.objects.create(username='test_user1', email='test_user1@test.com')
user.set_password('password')
user.save()

self.user = user
self.company = company

def test_logged_in_all_contacts_correct_template(self):
c = self.client
user_login = c.login(username=self.user.username, password=self.user.password)
self.assertTrue(user_login)

resp = c.get(reverse('all-contacts'), follow=True)

# Check if user is logged in
self.assertEquals(str(resp.context['user']), 'test_user1')
# Check if response is "success"
self.assertEqual(resp.status_code, 200)

self.assertTemplateUsed(resp, 'all_contacts.html')

在运行 python manage.py test contacts.tests 时,我遇到了一些错误。

第一个是 self.assertTrue(user_login) 返回 AssertionError: False is not true

第二个是 self.assertEquals(str(resp.context['user']), 'test_user1') 返回 AssertionError: 'AnonymousUser' != 'test_user1' 当我删除 self.assertTrue(user_login)

除了 client.login() 没有按我的预期工作之外,我不太确定出了什么问题,所以提前感谢任何可以提供帮助的人。

最佳答案

问题是 self.user.passwordhashed 密码。

你可以这样做,

user_login = c.login(username=self.user.username, password='password')

或者你可以使用 force_login相反,它不需要密码。

c.force_login(self.user)

关于python - Django 单元测试 - 客户端登录似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50180122/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com