Сложность написания тестов, получение неправильных ответов? - PullRequest
0 голосов
/ 05 февраля 2019

Моя проблема: я пишу тесты и получаю 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,
    })

URL:

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 Ответ

0 голосов
/ 05 февраля 2019

Ваша проблема в том, что вы используете два 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...