Написание модульного теста для представлений на основе моего класса, которые также требуют LoginRequiredMixin

У меня есть один ListView и один DetailView, и для обоих требуется LoginRequiredMixin. Теперь я хочу написать модульный тест для этих представлений на основе классов. Может ли кто-нибудь помочь мне с этим. Я хочу протестировать шаблон, вызывается контекст, а также правый вид. Мой Tests.py выглядит так: -

из django.test import TestCase, Client

из django.urls импортировать обратный, разрешить

из django.test.client import RequestFactory

из django.contrib.auth импорт get_user_model

из team.models импортировать команды

из team.views импортировать TeamListView, TeamDetailView

класс TestTeamsView (TestCase):

def setUp(self):
    self.factory = RequestFactory()

def test_list_view(self):
    request = self.factory.get(reverse('teams:team_list'))
    response = TeamListView.as_view()(request)
    self.assertEqual(response.status_code, 200)
    print(response.status_code)

Я получаю ответ:

если не request.user.is_authenticated:

AttributeError: объект WSGIRequest не имеет атрибута user


person Sachin Parashar    schedule 06.06.2020    source источник


Ответы (1)


Я получил раствор и он такой: -

из django.test.client import RequestFactory

из django.contrib.auth.models импортировать AnonymousUser

класс TestTeamsView (TestCase):

def setUp(self):
    self.factory = RequestFactory()
    self.user = User.objects.create_user(
        username='test1',
        email='[email protected]',
        first_name='t',
        last_name='u',
        password='password'
    )
def test_team_list_view_with_valid_user(self):
    request = self.factory.get('/team/')
    request.user = self.user
    response = TeamListView.as_view()(request)
    self.assertEqual(response.status_code, 200)
    self.assertEqual(response.template_name[0], 'teams/teams_list.html')

def test_team_list_view_with_anonymous_user(self):
    request = self.factory.get('/team/')
    request.user = AnonymousUser()
    response = TeamListView.as_view()(request)
    self.assertEqual(response.status_code,302)
person Sachin Parashar    schedule 07.06.2020