Django тестирование, после входа в систему по-прежнему получить ответ 302, ожидая 200 - PullRequest
0 голосов
/ 27 сентября 2019

Я тестирую часть входа в приложение django.мой рабочий процесс - client.get ('/ run / эксперимент / 1') -> ответ 302, перенаправить на страницу входа -> client.post ('loginpage', {'username': 'tester', 'password': 'tester '}) -> client.get (' / run / эксперимент / 1 ') -> ответ 200. Я проверил этот поток в оболочке (введите и выполните командную строку за строкой), и он работал как ожидалось.Но когда я пишу тестовый файл, даже после публикации логина, я все равно получаю статус 302 при попытке client.get.Вот мой код:

from django.test import TestCase, Client

class TestRunRequireLogin(TestCase):
    def setUp(self):
        self.client = Client()

    def test_rerun_not_login(self):
        response = self.client.get('/experiment/1')
        self.assertEqual(response.status_code, 302)

    def test_rerun_login(self):
        self.client.post('/accounts/login/?next=/run/experiment/1', {'username': 'tester', 'password': 'tester'})
        response = self.client.get('/experiment/1')
        self.assertEqual(response.status_code, 200)

Так что мой вопрос, когда в test_rerun_login, почему я все еще получил 302 после входа в систему

Ответы [ 2 ]

1 голос
/ 27 сентября 2019

У вас есть пользователи?У вас есть пользователь с именем пользователя tester и паролем tester?Если это так, вам нужно создать их в своем тестовом примере.

Может быть удобно разместить там свое мнение. Можете ли вы распечатать форму.Вы можете найти ответ там.

0 голосов
/ 27 сентября 2019

Тесты запускаются для пустой базы данных.Вам необходимо создать пользователя в методе setUp.

...