代码之家  ›  专栏  ›  技术社区  ›  Tom

使用selenium-django进行自动测试时数据库表被锁定

  •  0
  • Tom  · 技术社区  · 5 年前

    我用 django==3.1.2 硒和 selenium==3.141.0 .

    我有一个包含12个测试的测试文件,当我这样执行它们时:

    python3 manage.py test myapp.tests --settings=app.settings_test 其中两项测试失败。当我像这样单独处决他们时

    python3 manage.py test myapp.tests.MyTests.test_this --settings=app.settings_test 他们不会失败。

    错误通常是这样的 django.db.utils。操作错误:数据库表已锁定: 访客_人

    上述异常是以下异常的直接原因: myapp_cars

    ...

    django.core.management.base。命令错误:数据库 文件:memorydb_default?模式=内存&cache=共享无法刷新。 可能的原因:*数据库未运行或未配置 正确。*至少有一个预期的数据库表没有 存在*SQL无效。提示:查看输出 'django-admin-sqlflush'。这就是这个命令无法执行的SQL 跑。

    或

    django.db.utils。操作错误:数据库表已锁定: 缅甸河流

    它在数据库的不同模型上总是出错。

    我的数据库在 settings_test.py 看起来像这样:

    DATABASES['default'] = {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME':   os.path.join(tempfile.gettempdir(), 'db_test.sqlite3'),
        'OPTIONS': {
            'timeout': 20,
        }
    } 
    

    在这些测试中,我创建了大约120个条目,分布在12个测试中,夹具安装了大约20个条目。所以没那么多。在谷歌搜索错误后,我添加了超时,并添加了 time.sleep(1) 之后每 MyModal.objects.create() 看看这是否是原因,但这无济于事。

    有什么想法吗?

    0 回复  |  直到 5 年前