对于Django项目的BDD,我们将pytest-splinter与py-test django(和pytest-bdd)结合使用。
我们对真实数据进行测试。因此,我们希望对数据库所做的所有更改在每次测试之后或在所有测试之后都回滚。
我们的问题:
的正确方法是什么到目前为止,我们的位置:
我们在django_db_setup
中覆盖了py.test 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.
非常感谢您的帮助!