并行运行测试时的错误

当我尝试并行运行测试时,会出现多个问题。

根据文档,“test_”被附加到数据库中指定的数据库名称之前。我使用了名称“postgres”,因此在运行测试时创建的数据库称为test_postgres。并行运行测试时,将创建以下数据库(这是预期的):test_postgres_1test_postgres_2test_postgres_3test_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

我确保所有测试都是隔离的,这样我就可以并行运行它们。我该怎么办?


炎炎设计
浏览 144回答 1
1回答

四季花海

我建议不要自己构建测试工具,而是使用 and,这将处理每个并行工作线程的数据库创建和迁移。(可以运行Django单元测试而无需修改)pytestpytest-djangopytest-xdistpytest
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python