如何在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
相关产品推荐
相关产品推荐

