【问题标题】:flask testing - assertRedirects doesn't show redirect烧瓶测试 - assertRedirects 不显示重定向
【发布时间】:2020-04-13 09:46:54
【问题描述】:

我正在为我的 python3 烧瓶项目编写一个单元测试模块。其中一项测试旨在检查在将用户凭据传递给登录表单后,用户是否成功重定向到主页。该应用程序本身可以通过 Web 浏览器正常工作。
我有以下 sn-ps:
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)

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()

运行测试 sn-p 时,我不断收到断言错误:
self.assertTrue(response.status_code in valid_status_codes, message or not_redirect) AssertionError: False is not true : HTTP 状态 301, 302, 303, 305, 307 预期但得到 200

这意味着服务器返回的代码是 200,而我希望收到 302,这表示重定向。
我尝试检查服务器行为,这是我手动登录时控制台的结果:

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

【问题讨论】:

    标签: python flask flask-testing


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-29
      • 2021-06-28
      • 2017-01-11
      • 2019-01-04
      • 2013-10-08
      相关资源
      最近更新 更多