Для 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.
Большое спасибо за вашу помощь!