Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Intellj python测试:运行单独的Django测试_Python_Django_Unit Testing_Intellij Idea_Django Testing - Fatal编程技术网

Intellj python测试:运行单独的Django测试

Intellj python测试:运行单独的Django测试,python,django,unit-testing,intellij-idea,django-testing,Python,Django,Unit Testing,Intellij Idea,Django Testing,我在IntellijIDE中有Django应用程序。 我可以通过调用Django测试运行程序来运行所有Django测试 但是: 这是一个耗时的过程,对于开发来说并不理想,因为您希望重新运行一个失败的测试,而不是运行所有1000个正常的测试 IntelliJ有快速运行一个测试的选项(UI),但这个运行python测试运行程序。 我在里面添加了DJANGO\u设置\u模块=…,但现在我得到了其他错误: django.core.exceptions.AppRegistryNotReady: Apps

我在IntellijIDE中有Django应用程序。 我可以通过调用Django测试运行程序来运行所有Django测试

但是: 这是一个耗时的过程,对于开发来说并不理想,因为您希望重新运行一个失败的测试,而不是运行所有1000个正常的测试

IntelliJ有快速运行一个测试的选项(UI),但这个运行python测试运行程序。 我在里面添加了
DJANGO\u设置\u模块=…
,但现在我得到了其他错误:

django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
我试图解决这个错误,但我只发现:

import django
django.setup()
内部设置.py

我的问题是:

  • 我认为这破坏了应用程序的正常行为。应用程序在不同环境下正常工作
  • 它不会在设置内部调用此设置后的代码,因此不会安装密钥和其他密钥
  • 这与测试并没有太大关系,但却改变了整个应用程序
因此,我正在寻找一些设置,如何设置正常的python测试,以便它们作为django测试运行

编辑: 现在我改变了一些想法,做了:

  • 测试的单独设置
  • 执行所有导入,然后
    django.setup()
  • 现在我得到了不同的错误:

    # The settings_test.py
    SECRET_KEY = 'kdbaskdbkjadasd'
    
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'mobileapp',
    ]
    
    DEBUG = True
    
    ALLOWED_HOSTS = '*'
    
    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]
    
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]
    
    WSGI_APPLICATION = '...wsgi.application'
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'NAME': '...',
            'USER': '...',
            'PASSWORD': '...',
            'HOST': 'localhost',
            'PORT': 5432,
        }
    }
    
    AUTH_PASSWORD_VALIDATORS = [
        {
            'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
        },
        {
            'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
        },
        {
            'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
        },
        {
            'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
        },
    ]
    
    LANGUAGE_CODE = 'en-us'
    
    TIME_ZONE = 'UTC'
    
    USE_I18N = True
    
    USE_L10N = True
    
    USE_TZ = True
    
    STATIC_URL = '/static/'
    
    import django
    django.setup()
    
    错误:

    /Users/zadravecm/Work/.../env/bin/python3.6 /Users/zadravecm/Work/.../tests/tests.py
    Traceback (most recent call last):
      File "/Users/zadravecm/Work/.../tests/tests.py", line 2, in <module>
        from ....Services import subsidiary_service as sub_service
      File "/Users/zadravecm/Work/.../Services/subsidiary_service.py", line 3, in <module>
        from ....models import *
      File "/Users/zadravecm/Work/.../models.py", line 2, in <module>
        from django.contrib.auth.models import User
      File "/Users/zadravecm/Work/.../env/lib/python3.6/site-packages/django/contrib/auth/models.py", line 2, in <module>
        from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
      File "/Users/zadravecm/Work/.../env/lib/python3.6/site-packages/django/contrib/auth/base_user.py", line 47, in <module>
        class AbstractBaseUser(models.Model):
      File "/Users/zadravecm/Work/.../env/lib/python3.6/site-packages/django/db/models/base.py", line 107, in __new__
        app_config = apps.get_containing_app_config(module)
      File "/Users/zadravecm/Work/.../env/lib/python3.6/site-packages/django/apps/registry.py", line 252, in get_containing_app_config
        self.check_apps_ready()
      File "/Users/zadravecm/Work/.../env/lib/python3.6/site-packages/django/apps/registry.py", line 134, in check_apps_ready
        settings.INSTALLED_APPS
      File "/Users/zadravecm/Work/.../env/lib/python3.6/site-packages/django/conf/__init__.py", line 76, in __getattr__
        self._setup(name)
      File "/Users/zadravecm/Work/.../env/lib/python3.6/site-packages/django/conf/__init__.py", line 63, in _setup
        self._wrapped = Settings(settings_module)
      File "/Users/zadravecm/Work/.../env/lib/python3.6/site-packages/django/conf/__init__.py", line 142, in __init__
        mod = importlib.import_module(self.SETTINGS_MODULE)
      File "/Users/zadravecm/Work/.../env/lib/python3.6/importlib/__init__.py", line 126, in import_module
        return _bootstrap._gcd_import(name[level:], package, level)
      File "/Users/zadravecm/Work/.../settings_test.py", line 121, in <module>
        django.setup()
      File "/Users/zadravecm/Work/.../env/lib/python3.6/site-packages/django/__init__.py", line 24, in setup
        apps.populate(settings.INSTALLED_APPS)
      File "/Users/zadravecm/Work/.../env/lib/python3.6/site-packages/django/apps/registry.py", line 122, in populate
        app_config.ready()
      File "/Users/zadravecm/Work/.../env/lib/python3.6/site-packages/django/contrib/admin/apps.py", line 24, in ready
        self.module.autodiscover()
      File "/Users/zadravecm/Work/.../env/lib/python3.6/site-packages/django/contrib/admin/__init__.py", line 26, in autodiscover
        autodiscover_modules('admin', register_to=site)
      File "/Users/zadravecm/Work/.../env/lib/python3.6/site-packages/django/utils/module_loading.py", line 47, in autodiscover_modules
        import_module('%s.%s' % (app_config.name, module_to_search))
      File "/Users/zadravecm/Work/.../env/lib/python3.6/importlib/__init__.py", line 126, in import_module
        return _bootstrap._gcd_import(name[level:], package, level)
      File "/Users/zadravecm/.../env/lib/python3.6/site-packages/django/contrib/auth/admin.py", line 6, in <module>
        from django.contrib.auth.forms import (
      File "/Users/zadravecm/Work/.../env/lib/python3.6/site-packages/django/contrib/auth/forms.py", line 10, in <module>
        from django.contrib.auth.models import User
    ImportError: cannot import name 'User'
    
    /Users/zadravecm/Work/../env/bin/python3.6/Users/zadravecm/Work/../tests/tests.py
    回溯(最近一次呼叫最后一次):
    文件“/Users/zadravecm/Work/../tests/tests.py”,第2行,在
    从…服务导入子服务作为子服务
    文件“/Users/zadravecm/Work/../Services/subsidiary_service.py”,第3行,在
    从…模型导入*
    文件“/Users/zadravecm/Work/../models.py”,第2行,在
    从django.contrib.auth.models导入用户
    文件“/Users/zadravecm/Work/../env/lib/python3.6/site packages/django/contrib/auth/models.py”,第2行,在
    从django.contrib.auth.base_user导入AbstractBaseUser、BaseUserManager
    文件“/Users/zadravecm/Work/../env/lib/python3.6/site packages/django/contrib/auth/base_user.py”,第47行,在
    类AbstractBaseUser(models.Model):
    文件“/Users/zadravecm/Work/../env/lib/python3.6/site packages/django/db/models/base.py”,第107行,在新的__
    app\u config=apps.get\u包含app\u config(模块)
    文件“/Users/zadravecm/Work/../env/lib/python3.6/site packages/django/apps/registry.py”,第252行,在包含应用程序配置的get_中
    self.check_apps_ready()
    文件“/Users/zadravecm/Work/../env/lib/python3.6/site packages/django/apps/registry.py”,第134行,在check\u apps\u ready中
    settings.INSTALLED\u应用程序
    文件“/Users/zadravecm/Work/../env/lib/python3.6/site-packages/django/conf/_-init___.py”,第76行,在_u-getattr中__
    自我设置(名称)
    文件“/Users/zadravecm/Work/../env/lib/python3.6/site packages/django/conf/_init__.py”,第63行,在安装程序中
    自包装=设置(设置模块)
    文件“/Users/zadravecm/Work/../env/lib/python3.6/site packages/django/conf/_init__.py”,第142行,在_init中__
    mod=importlib.import\u模块(自我设置\u模块)
    文件“/Users/zadravecm/Work/../env/lib/python3.6/importlib/\uuuu init\uuuuu.py”,第126行,在导入模块中
    return _bootstrap._gcd_import(名称[级别:],包,级别)
    文件“/Users/zadravecm/Work/../settings\u test.py”,第121行,在
    django.setup()
    文件“/Users/zadravecm/Work/../env/lib/python3.6/site packages/django/_init__.py”,第24行,在安装程序中
    应用程序。填充(设置。已安装的应用程序)
    文件“/Users/zadravecm/Work/../env/lib/python3.6/site packages/django/apps/registry.py”,第122行,在填充中
    app_config.ready()
    文件“/Users/zadravecm/Work/../env/lib/python3.6/site packages/django/contrib/admin/apps.py”,第24行,就绪
    self.module.autodiscover()
    文件“/Users/zadravecm/Work/../env/lib/python3.6/site packages/django/contrib/admin/_init__.py”,第26行,在自动发现中
    自动发现模块('admin',register\u to=站点)
    文件“/Users/zadravecm/Work/../env/lib/python3.6/site packages/django/utils/module_loading.py”,第47行,在自动发现_模块中
    导入模块(“%s.%s%”(app\u config.name,模块到搜索))
    文件“/Users/zadravecm/Work/../env/lib/python3.6/importlib/\uuuu init\uuuuu.py”,第126行,在导入模块中
    return _bootstrap._gcd_import(名称[级别:],包,级别)
    文件“/Users/zadravecm/../env/lib/python3.6/site packages/django/contrib/auth/admin.py”,第6行,在
    从django.contrib.auth.forms导入(
    文件“/Users/zadravecm/Work/../env/lib/python3.6/site packages/django/contrib/auth/forms.py”,第10行,在
    从django.contrib.auth.models导入用户
    ImportError:无法导入名称“User”
    
    编辑:


    如果单击测试上的运行图标,则自动运行的测试运行程序设置的图像


    IDEA应该使用Django test runner来执行单个测试。我认为最好解决最初的问题,而不是为测试创建一个黑客设置。当您使用一个图标执行单个测试时,您可以拍摄IDE创建的测试运行配置的屏幕截图吗?我编辑了这个问题。谢谢,这甚至不是一个测试运行配置,但这是纯Python脚本的配置。您是如何创建它的?您是否单击了
    tests.py
    中的绿色三角形槽图标?在执行此操作之前,请尝试删除此运行配置,因为IDE将重用现有配置,而不是每次创建新配置。