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