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

在pytest中Mock JWT验证失败,返回401未授权错误

问题原因及解决办法

你的测试返回401是因为Mock的目标路径不对。@patch("flask_jwt_extended.verify_jwt_in_request")直接Mock了原库中的函数,但你的路由代码里已经把verify_jwt_in_request导入到了自己的模块中,装饰器实际调用的是你模块内的引用,而非原库的函数。

具体解决步骤:

1. 修正Mock的目标路径

假设你的路由代码所在模块是your_app.sites(即定义sites_blueprint的文件),需要将Mock目标改为你模块中导入的verify_jwt_in_request:

# 替换成你实际的模块路径,比如路由在app/sites.py就写"app.sites.verify_jwt_in_request"
@patch("your_app.sites.verify_jwt_in_request")
def test_sites(mock_verify, client):
    response = client.get('/sites/get')
    assert response.status_code == 200

2. (可选)使用Flask-JWT-Extended自带测试工具

如果不想用Mock,也可以用库提供的方法生成合法Token,添加到请求头中模拟真实请求:

from flask_jwt_extended import create_access_token

def test_sites(client):
    # 生成测试用Token
    access_token = create_access_token(identity="test_user")
    # 携带Token发起请求
    response = client.get('/sites/get', headers={"Authorization": f"Bearer {access_token}"})
    assert response.status_code == 200

这种方式更贴近真实业务场景,还能顺带验证Token逻辑的正确性。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 12:55:10