首页 > 解决方案 > Visual Studio Code 下的 Django 应用单元测试问题

问题描述

我有一份 Django 项目的草稿,其中添加了一个应用程序(例如 my_app)。在这个应用程序中,我放置了带有一个测试的 tests.py 文件:

import unittest

class Test_MyModel(unittest.TestCase):
  def test_dummy(self):
    self.assertEqual(1,1)

在这种情况下,这个虚拟测试由 Visual Studio Code 发现并且可以在其中执行,也可以从命令行启动这个测试:

python manage.py test

当我使用单元测试修改我的文件时,从 my_app 添加导入一些模型(放置在文件 models.py 中):

import unittest

from .models import MyModel # new added line

class Test_MyModel(unittest.TestCase):
  def test_dummy(self):
    self.assertEqual(1,1)

在这种情况下,我仍然可以从命令行毫无问题地运行测试,但 VSC 没有发现我的测试,并且在 VSC 的 Python 测试日志中出现错误:

======================================================================
ERROR: tests (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: tests
Traceback (most recent call last):
File "/usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/loader.py", line 434, in _find_test_path
module = self._get_module_from_name(name)
File "/usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/loader.py", line 375, in _get_module_from_name
__import__(name)
File "/Users/myuser/Projects/backend/my_app/tests.py", line 3, in <module>
from my_app.models import MyModel
File "/Users/myuser/Projects/backend/my_app/models.py", line 4, in <module>
class MyModel(models.Model):
File "/Users/myuser/Projects/virtualenvs/my_app_env/lib/python3.7/site-packages/django/db/models/base.py", line 103, in __new__
app_config = apps.get_containing_app_config(module)
File "/Users/myuser/Projects/virtualenvs/my_app_env/lib/python3.7/site-packages/django/apps/registry.py", line 252, in get_containing_app_config
self.check_apps_ready()
File "/Users/myuser/Projects/virtualenvs/my_app_env/lib/python3.7/site-packages/django/apps/registry.py", line 134, in check_apps_ready
settings.INSTALLED_APPS
File "/Users/myuser/Projects/virtualenvs/my_app_env/lib/python3.7/site-packages/django/conf/__init__.py", line 79, in __getattr__
self._setup(name)
File "/Users/myuser/Projects/virtualenvs/my_app_env/lib/python3.7/site-packages/django/conf/__init__.py", line 64, 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.

任何提示或建议如何解决此问题并开始在 VSC 下完全使用单元测试进行模型测试?

标签: djangounit-testingdjango-modelsvisual-studio-codevscode-settings

解决方案


我找到了解决我的问题的方法。我需要将以下行添加到 my_app 文件夹中的 init.py 文件中。

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my_app_project.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

推荐阅读