我正在为我的 python3 烧瓶项目编写一个单元测试模块。其中一项测试旨在检查在将用户凭据传递给登录表单后,用户是否成功重定向到主页。该应用程序本身可以通过 Web 浏览器正常工作。
我有以下片段:
routes.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)
测试.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 in valid_status_codes, message or not_redirect) AssertionError: False is not true : HTTP Status 301, 302, 303, 305, 307 expected but got 200
This表示服务器返回的代码是 200,而我希望收到 302,这表示重定向。
我尝试检查服务器行为,这是我手动登录时控制台的结果:
我的问题是:我如何才能检查重定向是否正在发生?