2017-01-30 6 views
2

Я хочу, чтобы pytest-django установил расширение Postgres, когда он создает тестовую базу данных. Я пытаюсь сделать это с помощью conftest.py, но я застрял.Как настроить базу данных postgres с помощью pytest-django?

Мой conftest.py находится на верхнем уровне моего проекта (тот же каталог, как manage.py), и содержит:

from django.db import connection 
import pytest_django 
@pytest.fixture(scope='session') 
def django_db_setup(*args, **kwargs): 
    pytest_django.fixtures.django_db_setup(*args, **kwargs) 
    cursor = connection.cursor() 
    cursor.execute("create extension pg_trgm") 

Но когда я запускаю его, я получаю:

_pytest.vendored_packages.pluggy.PluginValidationError: unknown hook 'pytest_django' in plugin <module 'conftest' from '/path/to/my/conftest.py'> 

ответ

2

Вы можете использовать сигналы pre_migrate. Например:

from django.db.models.signals import pre_migrate 
from django.apps import apps 

def app_pre_migration(sender, app_config, **kwargs): 

    cur = connection.cursor() 
    cur.execute('CREATE EXTENSION IF NOT EXISTS pg_trgm;') 

pre_migrate.connect(app_pre_migration, sender=apps.get_app_config('app')) 

Я надеюсь, что это может вам помочь.

+0

Спасибо @lefterisnik, это работает красиво :-) – rmoorman