Pytest Xdist并行执行,阻止重新创建数据库



我正试图通过并行执行4个线程(-n=4(来加快python Django web应用程序中的Selenium测试

在前4次测试中,有3次出现以下错误:

[test setup] [Test Error Output]
Got an error creating the test database: (1007, "Can't create database 'test1database'; database exists")

我知道我必须指定在并行测试执行之前运行一次安装程序,以防止在创建数据库时多次尝试,但我如何在pytest-xlist配置中强制执行这一点?

您可能会为每个线程拥有不同的数据库。worker_id固定装置允许您这样做https://github.com/pytest-dev/pytest-xdist#identifying-工作过程中的测试

@pytest.fixture()
def test_database(worker_id):
return CreateDatabase("test{}database".format(worker_id))

更新

这个github问题注释显示了OP原始问题的解决方案。它还使用共享模板创建N个数据库。这带来了一个有趣的转折点,即同步对fixture中共享资源的访问。

如果您在代码的其余部分不会遇到任何问题,您可以使用它:

CREATE DATABASE IF NOT EXISTS test1database;

相关内容

  • 没有找到相关文章

最新更新