Мой тест для запроса 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
, но я не понимаю, почему.