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

Django项目单元测试报错:INSTALLED_APPS未配置,求解决方案

Django单元测试配置错误解决方案

问题场景

在PyCharm中编写Django项目的单元测试,测试代码导入了项目的models模块,运行测试时触发以下配置错误:
django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

测试代码示例

from applicationapp import models
...

class TestElastic(TestCase):
    def test_parse_request(self):
        # 预期正常通过
        # self.fail()
        return

完整错误栈

/data/app-py3/venv3.7/bin/python /var/lib/snapd/snap/pycharm-professional/327/plugins/python/helpers/pycharm/_jb_unittest_runner.py --target test_elastic.TestElastic 
Testing started at 2:07 PM ...
Launching unittests with arguments python -m unittest test_elastic.TestElastic in /data/app-py3/APPLICATION/tests

Traceback (most recent call last):
  File "/var/lib/snapd/snap/pycharm-professional/327/plugins/python/helpers/pycharm/_jb_unittest_runner.py", line 35, in <module>
    sys.exit(main(argv=args, module=None, testRunner=unittestpy.TeamcityTestRunner, buffer=not JB_DISABLE_BUFFERING))
  File "/usr/local/lib/python3.7/unittest/main.py", line 100, in __init__
    self.parseArgs(argv)
  File "/usr/local/lib/python3.7/unittest/main.py", line 147, in parseArgs
    self.createTests()
  File "/usr/local/lib/python3.7/unittest/main.py", line 159, in createTests
    self.module)
  File "/usr/local/lib/python3.7/unittest/loader.py", line 220, in loadTestsFromNames
    suites = [self.loadTestsFromName(name, module) for name in names]
  File "/usr/local/lib/python3.7/unittest/loader.py", line 220, in <listcomp>
    suites = [self.loadTestsFromName(name, module) for name in names]
  File "/usr/local/lib/python3.7/unittest/loader.py", line 154, in loadTestsFromName
    module = __import__(module_name)
  File "/data/app-py3/APPLICATION/tests/test_elastic.py", line 6, in <module>
    from applicationapp.soap.elastic import Elastic
  File "/data/app-py3/APPLICATION/applicationapp/soap/elastic.py", line 7, in <module>
    from applicationapp import models
  File "/data/app-py3/APPLICATION/applicationapp/models.py", line 3, in <module>
    from django.contrib.auth.models import User
  File "/data/app-py3/venv3.7/lib/python3.7/site-packages/django/contrib/auth/models.py", line 2, in <module>
    from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
  File "/data/app-py3/venv3.7/lib/python3.7/site-packages/django/contrib/auth/base_user.py", line 48, in <module>
    class AbstractBaseUser(models.Model):
  File "/data/app-py3/venv3.7/lib/python3.7/site-packages/django/db/models/base.py", line 108, in __new__
    app_config = apps.get_containing_app_config(module)
  File "/data/app-py3/venv3.7/lib/python3.7/site-packages/django/apps/registry.py", line 253, in get_containing_app_config
    self.check_apps_ready()
  File "/data/app-py3/venv3.7/lib/python3.7/site-packages/django/apps/registry.py", line 135, in check_apps_ready
    settings.INSTALLED_APPS
  File "/data/app-py3/venv3.7/lib/python3.7/site-packages/django/conf/__init__.py", line 83, in __getattr__
    self._setup(name)
  File "/data/app-py3/venv3.7/lib/python3.7/site-packages/django/conf/__init__.py", line 68, in _setup
    % (desc, ENVIRONMENT_VARIABLE))
django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

Process finished with exit code 1

Empty suite

解决方案

方法1:使用Django自带测试运行器

直接通过Django的manage.py运行测试,它会自动初始化Django配置环境:
在项目根目录(包含manage.py的目录)执行命令:

python manage.py test tests.test_elastic.TestElastic

方法2:在测试文件中手动初始化Django环境

在测试文件的最开头添加以下代码,确保在导入models前完成Django配置:

import os
import django

# 替换为你的项目settings模块路径,示例中项目根为APPLICATION,settings在APPLICATION/APPLICATION/settings.py
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'APPLICATION.settings')
django.setup()

# 之后再导入models和其他模块
from applicationapp import models
...

方法3:配置PyCharm的测试运行环境

  1. 打开PyCharm的Run/Debug Configurations(右上角运行按钮旁的下拉菜单 → Edit Configurations)
  2. 点击左上角+号,选择Django tests
  3. 在配置页面:
    • Target:选择测试类或方法(如test_elastic.TestElastic)
    • Settings:指定项目的settings模块路径(如APPLICATION.settings)
    • Working directory:设置为项目根目录(包含manage.py的路径)
  4. 保存配置后,直接运行该配置即可

原因说明

直接使用Python的unittest命令运行测试时,不会自动加载Django的配置环境。而导入Django models模块会触发框架对INSTALLED_APPS等配置项的检查,此时配置未初始化就会抛出错误。必须先完成Django环境的配置,才能正常导入和使用models。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:44:55