Как тестировать неуправляемые модели с помощью pytest- django - PullRequest
0 голосов
/ 05 мая 2020

В моем проекте django у меня 5 приложений, всего 15 моделей, и все они неуправляемые. Я написал несколько тестов в pytest- django, и когда я их запускаю, они терпят неудачу из-за невозможности найти таблицы.

Как мне создать записи в базе данных для всех этих моделей, чтобы тесты не подведи?

1 Ответ

0 голосов
/ 05 мая 2020

Вы можете переопределить прибор django_db_setup в файле conftest.py:

@pytest.fixture(scope="session")
def django_db_setup(django_db_blocker):

    with django_db_blocker.unblock():

        from django.apps import apps

        models_list = apps.get_models()
        for model in models_list:
            with connection.schema_editor() as schema_editor:
                schema_editor.create_model(model)

                if model._meta.db_table not in connection.introspection.table_names():
                    raise ValueError(
                        "Table `{table_name}` is missing in test database.".format(
                            table_name=model._meta.db_table
                        )
                    )

        yield

        for model in models_list:
            with connection.schema_editor() as schema_editor:
                schema_editor.delete_model(model)

Это создаст таблицы для неуправляемых моделей перед запуском тестов и удалит эти таблицы после теста.

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