Сложность написания тестов, получение неправильных ответов?
Моя проблема: я пишу тесты и получаю 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)