Тестирование Django - Доступ к сайту с аутентифицированным пользователем

Я пытаюсь сделать модульный тест для доступа к 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})
  • в setUp() вы создаете пользователя без имени пользователя
  • в test_portfolio_url() вы пытаетесь войти с именем пользователя, но используете email.
  • в setUp(), вам не нужно вызывать user.save() - вызов create_user() уже сохраняет пользователя
  • .
Вернуться на верх