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

如何在Pytest中指定测试数据库?解决云端库权限问题

在Pytest中指定Django测试用的SQLite数据库

方法1:通过pytest配置文件指定数据库别名

如果你用的是pytest-django插件,直接在项目根目录的pytest.ini(或tox.ini)里添加配置,强制测试使用tests_db:

[pytest]
DJANGO_DATABASE_ALIAS = tests_db

这样pytest运行时会自动切换到你配置的SQLite测试库,无需改动原有settings的默认数据库配置。

方法2:在conftest.py中动态覆盖默认数据库

如果需要更灵活的控制(比如仅针对特定测试组切换),可以在项目根目录的conftest.py中编写钩子函数,在测试启动前替换默认数据库:

import pytest
from django.conf import settings

@pytest.fixture(scope="session", autouse=True)
def set_test_database():
    # 保存原默认数据库配置
    original_default_db = settings.DATABASES['default']
    # 替换为测试用SQLite数据库
    settings.DATABASES['default'] = settings.DATABASES['tests_db']
    yield
    # 测试结束后恢复原配置
    settings.DATABASES['default'] = original_default_db

这个fixture会在整个测试会话启动时自动执行,把默认数据库切换到tests_db,测试完成后切回云端数据库,避免影响本地开发环境。

方法3:单独配置测试环境settings

如果你的项目有独立的测试环境配置文件(比如settings/test.py),直接在该文件中覆盖默认数据库即可:

from .base import *

# 测试环境默认使用SQLite测试库
DATABASES['default'] = DATABASES['tests_db']

运行pytest时指定测试配置文件:

pytest --ds=myproject.settings.test

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 13:54:37