代码之家  ›  专栏  ›  技术社区  ›  Igor Filippov

测试烧瓶应用程序时出现BadRequestKeyError

  •  0
  • Igor Filippov  · 技术社区  · 5 年前

    POST 请求如下所示:

    import pytest
    
    def test_signup(client, app):
        assert client.get("/auth/signup").status_code == 200
    
        response = client.post("/auth/signup", data={"email": "user@example.com", "password": "12345"})
    
        assert "http://localhost/auth/signin" == response.headers["Location"]
    
    

    蓝图路线中的代码:

    @bp.route('/signup', methods=['GET', 'POST'])
    def signup():
        form = SignupForm()
        if form.validate_on_submit():
            user = User(email=form.email.data)
            user.set_password(form.password.data)
            db.session.add(user)
            db.session.commit()
            flash('Congratulations, you are now a registered user!')
            return redirect(url_for('auth.signin'))
    
        return render_template('auth/signup.html', title='Sign up', form=form)
    
    

    创建为:

    def create_app(config_class=Config):
        app = Flask(__name__)
        app.config.from_object(config_class)
    
        db.init_app(app)
    
        # Other code
        from app.auth import bp as auth_bp
        app.register_blueprint(auth_bp, url_prefix='/auth')
    
        return app
    

    代码在浏览器中工作,但在测试中出现以下错误:

    失败的测试/test\u auth.py::test\u signup-werkzeug.exceptions.BadRequestKeyError:400错误请求:浏览器(或代理)发送了此服务器无法理解的请求

    我想 form.validate_on_submit() 退货 False ,但我不明白为什么。

    0 回复  |  直到 5 年前