flask тестирование - assertRedirects не показывает перенаправление - PullRequest
0 голосов
/ 13 апреля 2020

Я пишу модуль модульного тестирования для моего python3 flask проекта. Один из тестов предназначен для проверки того, что после передачи учетных данных пользователя в форму входа пользователь успешно перенаправляется на домашнюю страницу. Само приложение отлично работает через веб-браузер.
У меня есть следующие фрагменты:
rout.py :

@users.route('/login', methods=['GET', 'POST'])
def login():
...
# correct credentials
login_user(user, remember=form.remember.data)
return redirect(url_for('main.home'))

# incorrect credentials
flash('Log-in failed! Check your credentials.', 'danger')
return render_template('login.html', title='Login', form=form)

test.py :

from flaskblog import create_app, db
from flask_testing import TestCase
import unittest
from flask import url_for

class Tests(TestCase):

    def create_app(self):     
        return create_app()

    def setUp(self):
        self.app = self.create_app()

    def tearDown(self):
        pass

    def test_login(self):
        tester = self.app.test_client(self)   
        # log with user credentials
        response = tester.post('/login', data={'email': 'ab@abc.com', 'password': '1'})
        self.assertRedirects(response, url_for('main.home'))




if __name__ == '__main__':
    unittest.main()

При запуске тестового фрагмента я получаю сообщение об ошибке: self.assertTrue (response.status_code в valid_status_codes, message или not_redirect) AssertionError: False неверно: HTTP Status 301, 302, 303, 305, 307 ожидается, но получил 200 Это означает, что код, возвращаемый сервером, равен 200, а я надеялся получить 302, что указывало бы на перенаправление. Я попытался проверить поведение сервера, и это результат консоли, когда я выполняю вход вручную: enter image description here

Мой вопрос: как именно я могу проверить, происходит ли перенаправление?

1 Ответ

0 голосов
/ 29 апреля 2020

Нашел решение - оказывается, я не включил скрытый токен в форму при публикации.

...