0

我正在为我的 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,这表示重定向。
我尝试检查服务器行为,这是我手动登录时控制台的结果:
在此处输入图像描述

我的问题是:我如何才能检查重定向是否正在发生?

4

1 回答 1

0

找到了解决方案——原来我在发布时没有在表单中包含隐藏的令牌。

于 2020-04-29T14:07:45.577 回答