【问题标题】:Django Testing - Accessing Site with authenticated userDjango 测试 - 使用经过身份验证的用户访问站点
【发布时间】:2021-12-09 18:46:35
【问题描述】:

我正在尝试对经过身份验证的用户 url 访问进行单元测试,目前我正在尝试对用户进行身份验证,但我无法这样做...

Test.py

def setUp(self):
    self.user = User.objects.create_user(email='test@testmail.com', password='test_password', is_staff=True)
    self.user.save()

    self.client = Client()

def test_portfolio_url(self):
    self.client.login(username='test@testmail.com', password='test_password')

    url = reverse('portfolio')
    response = self.client.get(url)
    self.assertEqual(response.status_code, 200)
    self.assertEqual(resolve(url).func, portfolio)
    self.assertTemplateUsed(response, 'portfolio.html')

views.py

@login_required(login_url='login')
def portfolio(request, user_id=None):
    if user_id and request.user.is_staff:
        user = User.objects.get(id=user_id)
    else:
        ...
    return render(request, 'portfolio.html', {'portfolio': portfolio_data})

这是我想在登录时得到的响应

【问题讨论】:

  • 您能提供更多信息吗?你看到什么错误?回应是什么? This 可能会有所帮助。
  • 我应该得到的响应是 200(页面呈现),但我收到 302(由于用户未通过身份验证而重定向)
  • 您创建的用户没有用户名(只有电子邮件),但您尝试使用用户名登录。

标签: django django-tests


【解决方案1】:
  • setUp() 中创建一个没有用户名的用户
  • test_portfolio_url() 中,您尝试使用用户名登录,但使用电子邮件。
  • setUp() 中,您不需要调用user.save() - create_user() 调用已经拯救了用户

【讨论】:

  • 修复了以下问题,但我仍然得到 302
猜你喜欢
  • 2016-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-30
相关资源
最近更新 更多