Сложность написания тестов, получение неправильных ответов?

Моя проблема: я пишу тесты и получаю 302 ответа вместо 200. Я полагаю, что это отчасти ожидаемо, потому что, когда пользователь не вошел в систему и не назначен в группу Employee_Management, они всегда будут перенаправлены,

Поэтому я пытаюсь создать пользователя и добавить его в группу, но я понятия не имею, как проверить, действительно ли пользователь вошел в систему или он является частью группы. Я не получаю ошибок от setUp, но тест все равно не проходит и дает мне 302. Так что я думаю, что я испортил мой setUp. Идеи?

Посмотреть:

@method_decorator(group_required('Employee_Management'), name='dispatch')
class ListActiveView(TemplateView):

def get(self, request):
    users = User.objects.all().exclude(is_superuser=True)
    return render(request, 'user/list_active.html', {
        'users': users,
    })

URLs:

app_name = 'user'
urlpatterns = [path('list_active/', ListActiveView.as_view(), name='list_active')]

тестовое задание:

class TestListActive(TestCase):

    def setUp(self):
        user = User.objects.create(username='testuser', password='testuserpass')
        emp_man = Group.objects.create(name='Employee_Management')
        user.groups.add(emp_man)
        c = Client()
        c.login(username='testuser', password='testuserpass')

    def test_list_active_url(self):
        response = self.client.get(reverse('user:list_active'))
        self.assertEquals(response.status_code, 200)

1 ответ

Ваша проблема в том, что вы используете два Client экземпляров.

Первый (c) тот, который вы создаете в setUp, в который вошел ваш пользователь, но никогда больше не используется.

Другой является TestCase клиент экземпляра (self.client) который вы используете в test_list_active_url и который ваш пользователь не вошел в систему.

Чтобы это исправить, всегда используйте TestCase Клиент экземпляра:

class TestListActive(TestCase):

    def setUp(self):
        user = User.objects.create(username='testuser', password='testuserpass')
        emp_man = Group.objects.create(name='Employee_Management')
        user.groups.add(emp_man)
        self.client.login(username='testuser', password='testuserpass')

    def test_list_active_url(self):
        response = self.client.get(reverse('user:list_active'))
        self.assertEquals(response.status_code, 200)
Другие вопросы по тегам