Intellj python测试:运行单独的Django测试
我在IntellijIDE中有Django应用程序。 我可以通过调用Django测试运行程序来运行所有Django测试 但是: 这是一个耗时的过程,对于开发来说并不理想,因为您希望重新运行一个失败的测试,而不是运行所有1000个正常的测试 IntelliJ有快速运行一个测试的选项(UI),但这个运行python测试运行程序。 我在里面添加了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
DJANGO\u设置\u模块=…
,但现在我得到了其他错误:
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
我试图解决这个错误,但我只发现:
import django
django.setup()
内部设置.py
我的问题是:
- 我认为这破坏了应用程序的正常行为。应用程序在不同环境下正常工作李>
- 它不会在设置内部调用此设置后的代码,因此不会安装密钥和其他密钥
- 这与测试并没有太大关系,但却改变了整个应用程序
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将重用现有配置,而不是每次创建新配置。