You need to enable JavaScript to run this app. 运行Pytest时测试数据库访问被拒绝报错如何解决
优惠活动
大模型
产品
解决方案
定价
更多

运行Pytest时测试数据库访问被拒绝报错如何解决

Pytest Django数据库访问报错排查指引
  • 优先排查依赖版本变动
    对比上周的Python依赖包版本,重点核对pytest-django、Django的版本号:pytest-django 4.0及以上版本收紧了多数据库访问限制,默认仅放行default数据库的访问,若你项目配置了名为test的非默认业务数据库,版本升级后会默认拦截对该库的所有查询请求。可执行pip list | grep pytest-django查看当前版本,和历史部署记录的版本做对比。
  • 排查pytest配置变更
    检查本地 pytest.ini、pyproject.toml 等配置文件中是否删除/修改了django_databases全局配置,或是执行pytest命令时新增了数据库相关的限制参数。如果原本配置的全局允许访问的数据库列表移除了test,就会触发全局报错。
  • 排查fixture与测试用例的数据库标记
    报错中触发问题的slug fixture依赖了默认的db fixture,该fixture默认仅授权访问default数据库。如果TransactionCode模型通过数据库路由分配到了test库,需要额外配置数据库访问权限:
    1. 单测试用例/ fixture 授权:添加标记@pytest.mark.django_db(databases=["default", "test"])
    2. 全局授权:在pytest配置文件中添加如下配置:
    [pytest]
    django_databases = default test
    
  • 排查数据库路由规则变动
    确认近期是否有代码修改了Django项目的DATABASE_ROUTERS路由逻辑,若原本路由到default库的业务模型被调整到了test库,也会触发该报错,不需要测试代码本身做改动。
  • 快速验证方案
    执行pytest命令时新增参数--no-db-restriction,若测试可正常运行,即可确认问题属于数据库访问限制触发,可进一步针对以上几点定位根因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 03:57:02