2017-01-30 34 views
2

Ich möchte, dass Pytest-Django eine Postgres-Erweiterung installiert, wenn es eine Testdatenbank erstellt. Ich habe mit conftest.py gemuckt, um zu versuchen, dies zur Arbeit zu bringen, aber ich stecke fest.Wie Postgres-Datenbank mit Pytest-Django einrichten?

Mein conftest.py ist auf der obersten Ebene meines Projekts (das gleiche Verzeichnis wie manage.py) und enthält:

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") 

Aber wenn ich es laufen, erhalte ich:

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

Antwort

2

Sie könnten die pre_migrate Signale verwenden. Zum Beispiel:

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')) 

Ich hoffe, das könnte Ihnen helfen.

+0

Danke @lefterisnik, das funktioniert gut :-) – rmoorman