django postgresql tests.py Ошибка RuntimeWarning - PullRequest
0 голосов
/ 27 мая 2019

У меня есть приложение Django, которое добавляет и отображает данные в моей базе данных postgresql онлайн на elephantsql.com. Настройка файла моего проекта выглядит следующим образом:

website/
    website/
    music/
    playlist/  
            __pycache__/
            migrations/
            static/
            templates/
            __init__.py
            admin.py
            apps.py
            models.py
            tests.py
            urls.py
            views.py
    .coverage
    db.sqlite3
    manage.py              

Мой проект работает прямо сейчас, где, когда я запускаю сервер и захожу в / playlist /, он корректно отображает содержимое и нормально подключается к моей базе данных postgresql.

Мой объект data.py DATABASES выглядит так:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'kxvmghva',
        'USER': 'kxvmghva',
        'PASSWORD': '--an actual password---',
        'HOST': 'raja.db.elephantsql.com', 
        'PORT': '5432',
    }
}

Сейчас я пытаюсь написать тестовые случаи в моем файле playlist / tests.py, но когда я пытаюсь запустить эти тесты, я получаю ошибки.

мой тестовый файл. Я пытаюсь запустить /playlist/tests.py

.
from django.test import TestCase
from .models import plays
from django.utils import timezone


class AnimalTestCase(TestCase):
    def setUp(self):
        print("setup")
        #Animal.objects.create(name="lion", sound="roar")
        #Animal.objects.create(name="cat", sound="meow")

    def test_animals_can_speak(self):
        """Animals that can speak are correctly identified"""
        print("test")
        #lion = Animal.objects.get(name="lion")
        #cat = Animal.objects.get(name="cat")
        #self.assertEqual(lion.speak(), 'The lion says "roar"')
        #self.assertEqual(cat.speak(), 'The cat says "meow"')

Когда я запускаю команду «python manage.py test playlist», я получаю следующие ошибки:

C:\Users\marti\Documents\kexp\website>python manage.py test playlist
Creating test database for alias 'default'...
C:\Python36-32\lib\site-packages\django\db\backends\postgresql\base.py:267: RuntimeWarning: Normally Django will use a connection to the 'postgres' database to avoid running initialization queries against the production database when it's not needed (for example, when running tests). Django was unable to create a connection to the 'postgres' database and will use the default database instead.
  RuntimeWarning
Got an error creating the test database: permission denied to create database

Type 'yes' if you would like to try deleting the test database 'test_kxvmghva', or 'no' to cancel:

если я наберу 'да', это приведет к этой ошибке:

Destroying old test database for alias 'default'...
Got an error recreating the test database: database "test_kxvmghva" does not exist

Я пытался решить эту ошибку, выполняя поиск в Интернете, и пробовал что-то вроде предоставления разрешения «kxvmghva» CREATEDB моего пользователя, а также запуска этой строки в моей базе данных elephantsql:

ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА ВСЕХ ТАБЛИЦАХ В СХЕМЕ public TO kxvmghva;

Но я все еще получаю эти ошибки при попытке запустить файл tests.py для моего списка воспроизведения / приложения. Я впервые настраиваю тестовые примеры для базы данных postgresql в django, и я буду очень признателен за любую помощь или совет. Спасибо.

1 Ответ

0 голосов
/ 27 мая 2019

Я полагаю, что план, который вы используете для базы данных, является бесплатным / общим, в случае, если у вас нет прав на создание дополнительных баз данных.

Это не проблема Django, а ограничения службы, которую вы используете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...