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

pytest-django中django_db_keepdb无法保留测试数据库的问题

问题原因及解决方法

你误解了django_db_keepdb的使用方式——它不是作为fixture传入测试函数的,而是一个测试标记,或者通过命令行参数启用的功能。你之前把它当作函数参数的写法不会触发保留数据库的逻辑,所以测试后数据库还是会被销毁。

正确用法

方法1:使用django_db_keepdb标记替换django_db

把测试函数上的@pytest.mark.django_db换成@pytest.mark.django_db_keepdb,这样该测试会复用现有测试库并在结束后保留:

import datetime
import pytest
from annotations import import_data

@pytest.mark.django_db_keepdb
def test_import_data():
    start_date = datetime.datetime(2016, 1, 1)
    end_date = datetime.datetime(2016, 6, 1)

    import_data.import_data(start_date, end_date)

方法2:通过命令行参数全局启用

保留原测试代码的@pytest.mark.django_db,运行测试时添加--keepdb参数,这样所有测试都会保留数据库:

pytest --keepdb

方法3:在配置文件中默认启用

如果希望每次运行测试都自动保留数据库,可以在项目的pytest.ini或pyproject.toml中添加配置:

  • 若用pytest.ini:
[pytest]
addopts = --keepdb
  • 若用pyproject.toml:
[tool.pytest.ini_options]
addopts = "--keepdb"

验证效果

使用正确方法后,测试日志会显示Reusing existing test database for alias 'default' ('test_vita')...(首次运行还是会创建,后续复用),测试完成后不会出现Destroying test database...的日志,数据库会被保留下来供你事后查看。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 10:27:40