Django DRF BDD - Как правильно реализовать Behave с DRF?

Как следует из названия, и поскольку документированные инструкции не работают из коробки.

  • Django3.2.7
  • DRF3.12.4
  • Behave1.2.6

У меня есть следующий файл environment.py, взятый точно из Behave Documentation и ссылающегося blog

# tests/acceptance/environment.py

import os
from behave import fixture, use_fixture
import django
from django.test.runner import DiscoverRunner
from django.test.testcases import LiveServerTestCase
from rest_framework.test import APIClient

from fixtures.users import UserTestHelper


os.environ['DJANGO_SETTINGS_MODULE'] = 'core.settings.test-settings'

# django related fixtures

@fixture
def django_test_runner(context):
    django.setup()
    context.test_runner = DiscoverRunner()
    context.test_runner.setup_test_environment()
    context.old_db_config = context.test_runner.setup_databases()
    yield
    context.test_runner.teardown_databases(context.old_db_config)
    context.test_runner.teardown_test_environment()


@fixture
def django_test_case(context):
    context.test_case = LiveServerTestCase
    context.test_case.setUpClass()
    yield
    context.test_case.tearDownClass()
    del context.test_case




def before_all(context):
    context.test.client = APIClient()
    use_fixture(django_test_runner, context)


def after_all(context):
    context.test_runner.teardown_databases(context.old_db_config)
    context.test_runner.teardown_test_environment()


def before_scenario(context, scenario):
    use_fixture(django_test_case, context)


def after_scenario(context, scenario):
    context.test.tearDownClass()
    del context.test


При выполнении $ behave в корне проекта я получаю следующее

django.core.exceptions.ImproperlyConfigured: Requested setting REST_FRAMEWORK, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

Несмотря на то, что моя первая строка в environment.py устанавливает переменную окружения ОС DJANGO_SETTINGS_MODULE. Затем я попытался обойти эту ошибку, выполнив следующее:

$ DJANGO_SETTINGS_MODULE=core.settings.test-settings behave

Я получаю сообщение AppRegistryNotReady: django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.

Вопрос

Что я упускаю, чтобы заставить это работать правильно, не похоже, что behave подхватывает мой файл environment.py.

Мой .behaverc выглядит следующим образом:


[behave]
paths = tests/acceptance

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