django - 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 下完全使用单元测试进行模型测试?
解决方案
我找到了解决我的问题的方法。我需要将以下行添加到 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()
推荐阅读
- rest - werkzeug.exceptions.BadRequestKeyError:400 错误请求:浏览器(或代理)发送了此服务器无法理解的请求。键错误:'id'
- sqlite - 使用预填充的 SQLite DB 数据运送 Flutter 应用程序
- flutter - 如何在 SingleChildScrollView 中实现不可滚动的列表视图
- r - ggplot/qqplotr 返回数据格式错误
- apache-spark - 如何在 HDP 2.6.5 中使用 Hive 仓库连接器
- python - 如何根据熊猫的范围在列中获取布尔值
- python - 蟒蛇其他:什么都不做
- node.js - 如何在猫鼬模式中使用 uuid 创建自定义 _id
- excel - 将数据从一个 Excel 工作表提取到另一个工作表
- postgresql - 将 las 信息导入到 postgresql/postgis 的 PDAL 管道