Quantcast
Channel: Active questions tagged python - Stack Overflow
Viewing all articles
Browse latest Browse all 23305

install postgresql extension before pytest set up database for django

$
0
0

I need to install citext extension to my postgresql database for django project. For the project itself it went smoothly and works great via migrations, but my pytest is configured with option --no-migrations, so pytest create database without running migrations. How can i make pytest to install citext postgres extension before tables are created? Currently i'm getting

- django.db.utils.ProgrammingError: type "citext" does not exist

while pytest trying to create table auth_users

sql = 'CREATE TABLE "auth_user" ("id" serial NOT NULL PRIMARY KEY, "password" varchar(128) NOT NULL, "last_login" timestamp ...T NULL, "is_active" boolean NOT NULL, "date_joined" timestamp with time zone NOT NULL, "email" citext NOT NULL UNIQUE)', params = Noneignored_wrapper_args = (False, {'connection': <django.contrib.gis.db.backends.postgis.base.DatabaseWrapper object at 0x7fb313bb0100>, 'cursor': <django.db.backends.utils.CursorWrapper object at 0x7fb30d9f8580>})

I tried to use django_db_setup fixture, but i did not figure out how to change it, because something like this

@pytest.fixture(scope="session")def django_db_setup(    request,    django_test_environment,    django_db_blocker,    django_db_use_migrations,    django_db_keepdb,    django_db_createdb,    django_db_modify_db_settings,):"""Top level fixture to ensure test databases are available"""    from django.test.utils import setup_databases, teardown_databases    setup_databases_args = {}    if not django_db_use_migrations:        from pytest_django.fixtures import _disable_native_migrations        _disable_native_migrations()    if django_db_keepdb and not django_db_createdb:        setup_databases_args["keepdb"] = True    with django_db_blocker.unblock():        from django.db import connection        cursor = connection.cursor()        cursor.execute("CREATE EXTENSION IF NOT EXISTS citext;")        db_cfg = setup_databases(            verbosity=request.config.option.verbose,            interactive=False,            **setup_databases_args        )    def teardown_database():        with django_db_blocker.unblock():            try:                teardown_databases(db_cfg, verbosity=request.config.option.verbose)            except Exception as exc:                request.node.warn(                    pytest.PytestWarning("Error when trying to teardown test databases: %r" % exc                    )                )    if not django_db_keepdb:        request.addfinalizer(teardown_database)

did not help me


Viewing all articles
Browse latest Browse all 23305

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>