【问题标题】:How do I get pytest to submit a flask wtforms form correctly如何让 pytest 正确提交烧瓶 wtforms 表单
【发布时间】:2020-05-23 08:08:46
【问题描述】:

我的一些测试反复失败,所以我用最短的一个作为这个问题的例子

测试

    def test_delete_char(self):
    with self.client:
        start = characters.query.count() #num of entries in db
        self.client.post(
                url_for("delete", identity=1),
                follow_redirects=True)
        end = characters.query.count() #num of entries in db after deletion
        self.assertTrue(start > end) #check if delete has gone through

路线

@app.route("/delete/<identity>", methods=["GET", "POST"])
def delete(identity):
form = DeleteForm()
if form.validate_on_submit():
    char = characters.query.filter_by(id=identity).first()
    db.session.delete(char)
    db.session.commit()
    return redirect(url_for("home"))
return render_template("delete.html", form=form, identity=identity, title="Delete")

在网站上手动运行此功能时没有问题。使用 pytest 我可以看到它没有通过 if form.validate_on_submit(): 在删除函数中。我只能得出结论,我的 self.client.post 是错误的,但我不知道问题是什么。任何帮助将不胜感激

【问题讨论】:

    标签: flask pytest flask-wtforms


    【解决方案1】:

    我发现了问题。在我的设置函数中,我设置了 WTF_CSRF_ENABLE=False 而不是 WTF_CSRF_ENABLED=False。这意味着它正在寻找一个在测试包含函数的 wtforms 时未提供的 CSRF 令牌。故事的寓意是不要使用 vim/编辑器而不突出显示错误

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-25
      • 2013-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-03
      相关资源
      最近更新 更多