当我尝试并行运行测试时,会出现多个问题。根据文档,“test_”被附加到数据库中指定的数据库名称之前。我使用了名称“postgres”,因此在运行测试时创建的数据库称为test_postgres。并行运行测试时,将创建以下数据库(这是预期的):test_postgres_1、test_postgres_2、test_postgres_3和test_postgres_4。但是,使用该选项运行所有测试时,每个测试都会失败,并显示以下消息:其中 x 可以是 1、2、3 或 4。我可以看到已经创建了以下数据库:其中x可以是1,2,3或4。“postgres_x”从何而来?为什么“test_”没有附加到这些前面?--parallel=4django.db.utils.OperationalError: FATAL: database "postgres_x" does not existtest_postgres_x此外,如果我手动创建预期的数据库(x = 1 到 4),则应用于“主”数据库的迁移不会应用于克隆。这会导致类似如下的错误:.使用 4 个内核时,大约 1/4 的测试通过。postgres_xdjango.db.utils.ProgrammingError: relation "users_user" does not exist最后,如果我尝试使用 迁移,我会得到:。postgres_xmigrate --database=postgres_xdjango.db.utils.ConnectionDoesNotExist: The connection postgres_x doesn't exist我确保所有测试都是隔离的,这样我就可以并行运行它们。我该怎么办?
1 回答

四季花海
TA贡献1811条经验 获得超5个赞
我建议不要自己构建测试工具,而是使用 and,这将处理每个并行工作线程的数据库创建和迁移。(可以运行Django单元测试而无需修改)pytest
pytest-django
pytest-xdist
pytest
添加回答
举报
0/150
提交
取消