gpt4 book ai didi

python - Flask 应用程序的测试覆盖率不起作用

转载 作者:行者123 更新时间:2023-11-28 19:29:29 25 4
gpt4 key购买 nike

嗨,我想在终端的 Flask 应用程序中测试“删除路由”,我可以看到测试已经过去,它说“test_user_delete (test_app.LayoutTestCase) ... ok”但是当我打开封面时,它仍然是红色的,这意味着没有覆盖它,请有人向我解释为什么以及我哪里做错了吗?

app.layout.view.py

enter image description here

测试.py

            e1 = Users(name='admine2', email='admine2@gmail.com', age=25)
e2 = Users(name='teste2', email='teste2@gmail.com', age=27)
db.session.add_all([e1, e2])
db.session.commit()
u = Users.query.get(1)
db.session.remove()
db.session.delete(u)
response = self.client.post('/delete/1',
follow_redirects=True)
self.assertTrue('admine2 is removed!', response.data)

View .py:

 @layout.route('/delete/<int:id>')
def delete(id):
"""remove monkey"""
user = Users.query.get_or_404(id)
db.session.delete(user)
db.session.commit()
flash("{0} is removed!".format(user.name))
return redirect(url_for("layout.user", page=1, sortby='normal'))

最佳答案

我假设您的设置方法设置了 app.config['Testing'] = True。否则,Flask-login 会将您重定向到您的登录 View 。

编辑 但这似乎不是这里的问题,因为您会收到 404 错误。如果需要登录,问题将是未授权 - 401 错误。相反,我错误地假设您使用“DELETE”方法注册了您的函数,所以我提供的 url_for 语句是错误的。

您可以在 _flashes 键下的 session 中找到闪烁的消息。你可以试试:

with self.client as c:
rv = self.client.get(url_for('delete', id=e1.id), follow_redirects=True)
print rv.data
with c.session_transaction() as session:
self.assertTrue("delete done !." in session['_flashes'])

您可能还想看看 Flask Testing

关于python - Flask 应用程序的测试覆盖率不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28670041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com