Лучший способ создания примера проекта в тестовом наборе django plugin

Это может быть простой вопрос, но я не могу разобраться в нем. Если я создаю приложение-плагин Django, назовем его foo, которое добавляет некоторые возможности базы данных, которые могут использовать другие приложения (например, модели, которые должны наследоваться), и я хочу добавить тесты для этого приложения. Структура:

foo/
  apps.py
  models.py
tests/
  test_foo_basic.py
  test_bar.py
  ...
setup.py
README.md
...

Проект не является полноценным Django приложением, так как это плагин app для других. Таким образом, мне нужно создать fake Django проект в каталоге тестирования, по крайней мере с одним приложением, которое определяет некоторые модели, наследуемые от foo.models.<some_model> и протестировать его, правильно?

Неужели это единственный способ? Для меня это кажется слишком сложным.

Если да, то для меня нормально ответить "так и есть". И я соглашусь ;-) Если нет, пожалуйста, скажите мне, что я сложный и покажите мне что-нибудь попроще, плагин pytest и т.д.? Для тестирования мне нужен а

Я выяснил это сам, после долгих усилий.

Согласно pytest-django docs, вы можете использовать pytest_configure() в conftest.py для установки "псевдо" среды Django для таких случаев:

# conftest.py

import django
from django.conf import settings


def pytest_configure():
    settings.configure(
        DATABASES={
            "default": {
                "ENGINE": "django.db.backends.sqlite3",
                "NAME": ":memory:",
            }
        },
        INSTALLED_APPS=[
            "django.contrib.auth",
            "django.contrib.contenttypes",
            "django.contrib.sessions",
            "django.contrib.messages",
            "django.contrib.staticfiles",
            "django.contrib.sites",
            "your.app"
        ],
    )
    django.setup()

Таким образом, вам не нужно ни pytest.ini, ни DJANGO_SETTINGS_MODULE env, и самое лучшее: ** Вам не нужен полный фиктивный проект Django`

Это не поможет, если вам нужно протестировать функции проекта, такие как загрузка модулей и т.д. Но для простых юнит-тестов это работает отлично.

Вернуться на верх