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

Flask测试路由未注册:请求/sth/为何返回404?

解决Flask路由测试返回404的问题

问题核心是你测试时新建的独立Flask实例,根本没加载主应用里定义的/sth/路由,自然会返回404。正确的做法是复用主应用的Flask实例来测试:

1. 确保主应用的app实例可被导入

检查main.py的结构,要把app实例定义在全局作用域,不要放在if __name__ == '__main__'代码块内:

from flask import Flask

# 全局定义app,让测试文件能直接导入
app = Flask(__name__)

@app.route('/sth/')
def sth():
    return "对应/sth/的响应内容"

if __name__ == '__main__':
    app.run(debug=True)

2. 在测试文件中导入主应用的app并执行测试

修改tests/test_view.py,直接导入主应用的app实例,使用Flask的测试客户端发起请求:

from main import app

def test_sth_route_exists():
    # 创建测试客户端
    client = app.test_client()
    # 发起GET请求到目标路由
    response = client.get('/sth/')
    # 验证状态码为200,说明路由已注册且正常响应
    assert response.status_code == 200
    # 可选:验证响应内容是否符合预期
    assert response.data.decode('utf-8') == "对应/sth/的响应内容"

3. 若使用app工厂函数的情况

如果你的主应用是通过工厂函数创建app(比如create_app()),测试时要调用工厂函数生成正确的app实例:

from main import create_app

def test_sth_route_with_factory():
    app = create_app()
    client = app.test_client()
    response = client.get('/sth/')
    assert response.status_code == 200

额外注意点

  • 运行测试时,确保项目根目录在Python的搜索路径中(使用pytest等工具时,默认会自动识别项目结构,无需额外配置)
  • 若路由有特殊规则(比如末尾带/),要保证请求的URL和路由定义完全匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:12:26