我正试图通过并行执行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;