BadRequestKeyError при тестировании приложения flask - PullRequest
1 голос
/ 13 марта 2020

Мой тест для запроса 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

Код работает в браузере, но я получаю следующую ошибку в тесте:

FAILED tests / test_auth.py :: test_signup - werkzeug.exceptions.BadRequestKeyError: 400 Bad Request: Браузер (или прокси-сервер) отправил запрос, что этот сервер не может понять

Я думаю, form.validate_on_submit() возвращает False, но я не понимаю, почему.

...