Откат БД с реальными данными при использовании pytest-django, pytest-splinter и pytest-bdd - PullRequest
0 голосов
/ 29 января 2019

Для BDD нашего проекта Django мы объединяем pytest-splinter с py-test django (и pytest-bdd).

Мы запускаем наш тест на реальных данных.Поэтому мы хотели бы, чтобы все изменения, внесенные в БД, откатывались после каждого теста или, альтернативно, после всех тестов.

Наш вопрос: как правильно

  • использовать реальную БД
  • имеет надлежащий откат после тестирования браузера?

Где мы на данный момент: Мы перезаписываем прибор py.test django_db_setup следующим образом в conftest.py:

@pytest.fixture(scope='session')
def django_db_setup(
    request,
    django_test_environment,
    django_db_blocker,
    django_db_use_migrations,
    django_db_keepdb,
    django_db_modify_db_settings,
):
    return

Когда не с использованием прибора py.test live_server, изменения БД, сделанные через браузер, не откатываются и накапливаются в нашей БД.

@scenario('user_management.feature', 'Add a new user')
def test_add_a_new_user(db):
    pass

При использованииВ приспособлении py.test live_server мы получаем ошибку, что таблицы БД не могут быть сброшены (это не то поведение, которое нам хотелось бы).

@scenario('user_management.feature', 'Add a new user')
def test_add_a_new_user(db, live_server):
    pass

Это ошибка:

django.db.utils.NotSupportedError: cannot truncate a table referenced in a foreign key constraint django.core.management.base.CommandError: Database carbon-delta-lab couldn't be flushed.

Большое спасибо за вашу помощь!

...