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

PyCharm中导入Django类后单元测试报错:AppRegistryNotReady

解决Django单元测试AppRegistryNotReady错误的实用方案

错误原因

你遇到的Apps aren't loaded yet错误,本质是测试模块加载阶段就导入了依赖Django模型的PocFunctional类,但此时Django的应用注册表还没完成初始化——原生unittest.TestCase不会自动触发Django环境的启动流程。

具体解决方法

1. 切换到Django自带的测试框架(推荐)

Django的django.test.TestCase会自动处理环境初始化,包括加载所有app。只需把测试类的继承对象替换掉:

from django.test import TestCase  # 替换原生unittest.TestCase
from app.poc import PocFunctional

class TestPocEav(TestCase):
    def test_get_transaction(self):
        # 编写你的测试逻辑
        pass

用这个方式,不需要额外配置,PyCharm运行测试时会自动识别Django环境。

2. 手动初始化Django环境(适用于坚持用原生unittest的场景)

如果必须用原生unittest.TestCase,要在所有Django相关导入之前手动初始化Django:

import os
import django
from unittest import TestCase

# 先设置环境变量并初始化Django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'applicationproject.settings')
django.setup()

# 现在再导入被测类
from app.poc import PocFunctional

class TestPocEav(TestCase):
    def test_get_transaction(self):
        pass

注意:这段初始化代码必须放在最前面,确保在加载任何Django模型或app代码前执行。

3. 检查PyCharm运行配置

虽然你已经添加了环境变量,但可以做以下验证:

  • 打开「运行/调试配置」,找到对应的Python测试配置,确认DJANGO_SETTINGS_MODULE的值完全正确(比如是否和项目结构匹配,有没有拼写错误)
  • 尝试新建「Django tests」类型的配置,而非普通的「Python测试」——这种配置会自动关联Django环境,减少手动配置的出错概率

新手额外建议

  • 优先用Django自带测试框架,它封装了很多和Django生态兼容的逻辑,比如数据库事务回滚、测试客户端等,比原生unittest更适配Django项目
  • 运行测试时可以先尝试用命令行执行python manage.py test tests.test_poc.TestPocEav,如果命令行能正常运行,说明PyCharm的配置可能有问题,再针对性调整
  • 确保测试文件所在的tests目录被正确配置(比如在INSTALLED_APPS中添加'tests',或者使用相对导入)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 15:45:36