Я пытаюсь запустить модульные тесты из PyCharm без успеха в проекте Django.
Вот архитектура моего проекта:
- fugo/ (root repository)
- .env_test
- fugoproj/ (django project repository)
- config/
- settings.py
Я установил EnvFile плагин для загрузки переменных окружений .env_test, которые используются моим settings.py.
Затем я создал конфигурацию Run / Debug на Pycharm
При запуске тестов из этой конфигурации на консоли Pycharm отображается сообщение «Нет таких настроек файла настроек». Тесты найдены и выполнены, но не прошли, потому что настройки, очевидно, не могут быть загружены.
Юнит-тесты отлично работают при запуске из оболочки Bash.
Что не так с моей конфигурацией?
Спасибо.
РЕДАКТИРОВАТЬ, чтобы предоставить информацию о DATABASES
переменной настройки:
в settings.py, я использую пакет django_heroku
(предоставленный Heroku) для автоматической настройки базы данных:
django_heroku.settings(locals())
Метод django_heroku.settings
выглядит следующим образом:
def settings(config, *, db_colors=False, databases=True, test_runner=True, staticfiles=True, allowed_hosts=True, logging=True, secret_key=True):
# Database configuration.
# TODO: support other database (e.g. TEAL, AMBER, etc, automatically.)
if databases:
# Integrity check.
if 'DATABASES' not in config:
config['DATABASES'] = {'default': None}
if db_colors:
# Support all Heroku databases.
# TODO: This appears to break TestRunner.
for (env, url) in os.environ.items():
if env.startswith('HEROKU_POSTGRESQL'):
db_color = env[len('HEROKU_POSTGRESQL_'):].split('_')[0]
logger.info('Adding ${} to DATABASES Django setting ({}).'.format(env, db_color))
config['DATABASES'][db_color] = dj_database_url.parse(url, conn_max_age=MAX_CONN_AGE, ssl_require=True)
if 'DATABASE_URL' in os.environ:
logger.info('Adding $DATABASE_URL to default DATABASE Django setting.')
# Configure Django for DATABASE_URL environment variable.
config['DATABASES']['default'] = dj_database_url.config(conn_max_age=MAX_CONN_AGE, ssl_require=True)
logger.info('Adding $DATABASE_URL to TEST default DATABASE Django setting.')
# Enable test database if found in CI environment.
if 'CI' in os.environ:
config['DATABASES']['default']['TEST'] = config['DATABASES']['default']
else:
logger.info('$DATABASE_URL not found, falling back to previous settings!')
if test_runner:
# Enable test runner if found in CI environment.
if 'CI' in os.environ:
config['TEST_RUNNER'] = 'django_heroku.HerokuDiscoverRunner'
мой .env_test
файл не содержит DATABASE_URL
переменную