You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写Flask视图单元测试时遇AssertionError问题求助

解决Flask单元测试AssertionError问题

问题出在哪

  • 请求URL写错了:你在测试里用的/article/<int:id>是Flask的路由定义语法,不是实际能访问的URL。服务器找不到这个路径,直接返回了Flask自带的默认404页面,自然搜不到你自定义模板里的<title>test</title>。
  • 自定义404模板没生效:报错里的404内容是Flask默认的,说明你的自定义404模板要么没被正确调用,要么根本没配置错误处理函数。

怎么改

1. 修正测试的请求URL

把测试里的请求路径改成带具体ID的真实URL,比如:

response = tester.get('/article/1')

要是你想测试404场景,就用一个数据库里不存在的ID,比如/article/999,这样才能触发404错误。

2. 确保自定义404模板生效

在你的Flask应用代码里加上404错误处理函数,指定使用你的模板:

@app.errorhandler(404)
def page_not_found(e):
    # 这里填你的404模板文件名
    return render_template('404.html'), 404

同时确认你的404.html放在Flask默认的templates文件夹里,模板里确实有<title>test</title>。

3. 调整测试断言逻辑

如果是测试存在的文章页面,先断言状态码是200再检查title;如果是测试404,要确保触发的是自定义404模板,再做断言:

def test_article(self):
    tester = app.test_client(self)
    # 用不存在的ID触发自定义404
    response = tester.get('/article/999')
    self.assertEqual(response.status_code, 404)
    self.assertIn(b"<title>test</title>", response.data)

额外检查点

  • 确认Flask应用配置里的TEMPLATE_FOLDER指向正确的模板目录
  • 重启测试服务,确保代码修改生效

内容的提问来源于stack exchange,提问作者Hamza maroc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 15:35:02