【问题标题】:unittest\loader.py raise ImproperlyConfiguredunittest\loader.py raise ImproperlyConfigured
【发布时间】:2021-04-09 14:50:19
【问题描述】:

以下代码会导致问题,如果我在 Django 中添加单元测试文件:

from myApp.models import anyModel

导入测试模块失败:test_App.test_models Traceback(最近一次调用最后一次):

File "C:\Program Files (x86)\Python38-32\lib\unittest\loader.py", line 436, in _find_test_path

module = self._get_module_from_name(name)

File "C:\Program Files (x86)\Python38-32\lib\unittest\loader.py", line 377, in _get_module_from_name
__import__(name)

File "d:\SC\Top4Cast\Top4CastsApp\test_App\test_models.py", line 3, in <module>
from Top4CastsApp.models import Author


File "d:\SC\Top4Cast\Top4CastsApp\models.py", line 31, in <module>
class Diagram(models.Model):


File "d:\SC\Top4Cast\env\lib\site-packages\django\db\models\base.py", line 108, in __new__
app_config = apps.get_containing_app_config(module)

File "d:\SC\Top4Cast\env\lib\site-packages\django\apps\registry.py", line 253, inget_containing_app_config

self.check_apps_ready()

File "d:\SC\Top4Cast\env\lib\site-packages\django\apps\registry.py", line 135, in check_apps_ready
settings.INSTALLED_APPS
  File "d:\SC\Top4Cast\env\lib\site-packages\django\conf\__init__.py", line 82, in __getattr__
self._setup(name)
  File "d:\SC\Top4Cast\env\lib\site-packages\django\conf\__init__.py", line 63, in _setup

提出不当配置(

django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not 已配置。您必须在访问设置之前定义环境变量 DJANGO_SETTINGS_MODULE 或调用 settings.configure()。

【问题讨论】:

    标签: django-models loader testcase discovery django-unittest


    【解决方案1】:

    苦苦挣扎了一会儿,我找到了原因并修复了它。先解释一下问题:

    1- 什么是bug情况:

    您已将 Django+VSCode 用于您的 Web 项目,并希望受益于使用 vscode-test-panel 来发现您的测试,并可能使用测试资源管理器单独调试您的测试。这是处理这项工作的网络参考:

    如果你按照这些步骤一切都很好,但只要你像这样从你的 models.py 中导入一个模型:

    • 从 myApp.models 导入 anyModel

    您的测试发现将面临以下错误:

    提出不当配置( django.core.exceptions.ImproperlyConfigured:请求设置 INSTALLED_APPS,但未配置设置。您必须在访问设置之前定义环境变量 DJANGO_SETTINGS_MODULE 或调用 settings.configure()。

    2-什么是错误:

    如果你遇到这个错误,你可以看到这个命令行命令工作正常:

    • python manage.py 测试

    问题与设置 DJANGO_SETTINGS_MODULE 有关。

    3-解决办法是什么:

    I found the fix like thius:
    
    1- using pytest framework instead of unit test framework
    
    2- pip install pytest-django
    
    3- create pytest.ini and put it in the root of your project
    
    4- add the following content in pytest.ini:
    
    -- FILE: pytest.ini (or tox.ini)
    
    [pytest]
    
    DJANGO_SETTINGS_MODULE = mysite.settings (mysite shoul be change to your web project name)
    
    # -- recommended but optional:
    
    python_files = tests.py test_*.py *_tests.py
    

    最后一行将解决问题。

    我使用了以下参考资料:

    【讨论】:

      猜你喜欢
      • 2020-12-10
      • 2015-12-17
      • 2020-05-15
      • 1970-01-01
      • 2013-09-06
      • 2020-12-25
      • 2020-01-15
      • 1970-01-01
      • 2015-08-15
      相关资源
      最近更新 更多