在单元测试测试期间,Flash无法进行重定向

时间:2014-08-31 11:25:26

标签: python flask python-unittest

我有一个端点,它执行一些逻辑和一个flash(),然后重定向到另一个端点,这会添加另一个闪存并显示两个闪烁的消息。当我在浏览器中测试端点时,我会收到两条消息。但是,当我进行单元测试时,第一个闪光灯不会出现。

@bp.route('/signup/', methods=['POST'])
def signup():
    form = SignupForm(prefix='signup')
    next_url = url_for('.home')

    if form.validate_on_submit():
        # do stuff like add to waiting list
        person = persons.new()
        form.populate_obj(person)
        person = persons.save(person)
        flash(Markup(u'Thanks for signing up!'), 'success')
    return redirect(next_url)

@bp.route('/')
def home():
    flash('This is home', 'info')
    return render_template('home.html')


class PageTests(MTestCase):

    def test_signup(self):
     r = self.post('/signup/',
        data={
            'signup-email': 'test1@test.com',
        })
        person = persons.find(email='test1@test.com').first()
        self.assertIsNotNone(person)
        self.assertIn('Thanks for signing up', r.data)

我猜测在重定向期间闪存队列丢失了,但我不完全确定如何或为什么。

1 个答案:

答案 0 :(得分:0)

添加follow_redirects=True参数,因为登录页面重定向。

r = self.post(
    '/signup/',
    data={
        'signup-email': 'test1@test.com',
    },
    follow_redirects=True  # <----
)

请参阅Logging in and out - Testing Flask Application