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

IntelliJ运行Django单测报错‘Apps aren't loaded’求助

解决IntelliJ单独运行Django单元测试的AppRegistryNotReady问题

我之前也踩过类似的坑,你遇到的问题本质是IntelliJ默认的单测运行方式没正确初始化Django的测试环境,直接加django.setup()又会走生产环境配置,导致误用本地数据库还被清空。下面给你几个靠谱的解决办法:

方法一:配置IntelliJ测试运行模板(推荐)

这是最彻底的方式,让IntelliJ通过manage.py test来运行单个用例,和命令行行为完全一致:

  • 点击IntelliJ右上角的运行配置下拉框,选择「Edit Configurations...」
  • 在左侧列表找到「Python Tests」,选中你用的测试框架(比如unittest或pytest),点击左上角的「+」新建模板
  • 在「Configuration」标签页:
    • Script path:选择项目根目录下manage.py的绝对路径
    • Parameters:填写test 你的测试路径,比如要运行backend/tests/test_views.py里UserViewTests类的test_login方法,就填test backend.tests.test_views.UserViewTests.test_login
    • Working directory:设置为项目根目录(也就是manage.py所在的文件夹)
    • Environment variables:确认已添加DJANGO_SETTINGS_MODULE=backend.settings和PYTHONUNBUFFERED=1
  • 保存配置后,再点击测试用例旁的绿色三角,就会自动使用Django的专用测试数据库,测试结束后自动销毁,完全不会影响本地数据库

方法二:在测试文件中添加针对性的初始化代码

如果不想改运行配置,可以在单个测试文件开头添加以下代码,确保只初始化干净的测试环境:

import django
from django.conf import settings

# 仅在未配置时初始化测试环境
if not settings.configured:
    # 配置测试用的内存数据库和必要应用
    settings.configure(
        DEBUG=True,
        DATABASES={
            'default': {
                'ENGINE': 'django.db.backends.sqlite3',
                'NAME': ':memory:'
            }
        },
        INSTALLED_APPS=[
            'django.contrib.contenttypes',
            'django.contrib.auth',
            'backend',  # 你的应用名称
        ]
    )
    django.setup()

这种方式用内存数据库,不会污染本地数据,但不如方法一完整——毕竟manage.py test还会自动处理测试迁移、数据隔离等细节。

额外检查项

  • 确认IntelliJ的Python解释器是项目的虚拟环境(venv),避免环境依赖不一致导致的奇怪问题
  • 如果你用的是pytest,记得安装pytest-django插件,它会自动帮你处理Django环境的初始化工作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 09:19:06