使用pytestDjango、pytestsplinter和pytestbdd时使用真实数据回滚数据库

2024-04-25 20:22:41 发布

您现在位置:Python中文网/ 问答频道 /正文

对于Django项目的BDD,我们将pytest splinter与py test Django(以及pytest BDD)结合起来。在

我们对真实数据进行测试。因此,我们希望在每次测试之后,或者在所有测试之后回滚对DB所做的所有更改。在

我们的问题: 正确的方法是什么

  • 使用真实数据库
  • 浏览器测试后是否有适当的回滚?在

我们目前所处的位置: 我们重写py.测试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.测试live_serverfixture,通过浏览器所做的数据库更改不会回滚,并累积到我们的数据库中。在

^{pr2}$

当使用py.测试live_serverfixture我们得到一个错误,即不能刷新DB表(这不是我们想要的行为)。在

@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.

非常感谢你的帮助!在


Tags: djangopytestlive数据库dbpytestdef