0

我正在发现pytest-xdist与依赖相关插件的某种组合,如pytest-dependency(但它似乎有一些不兼容,最好说,它们不相处),或者 pytest-ordering有同样的问题.

我需要的是并行运行,但注入一些约束以保证与常见任务相关的一些测试(主要是为特定测试提供数据库)在“并行化”组的其余测试之前隔离执行。例如,我想像这样组织我的测试:

test_suite1 / test_provision.py
            / chapter1 / test_a.py
                         test_b.py
                         ...
            / chapter2 / test_provision.py <= don't pay attention on test names issues (this
                         test_a.py            can be named  test_suite1_chapter2_provision.py
                         test_b.py            or __init__.py can be used to avoid the problem
                         test_c.py            of unique names)
                         ...
              ...
test_suite2 / test_suite2_provision.py
              ...
...

这个想法是根据与依赖项相关的约束来运行并行化,因此,例如,当输入 收集的测试的全局列表时test_suite1,pytest-xdist 应该停止test_provision.py串行运行它,然后并行运行章节等等。某些章节也可能有约束(即第 2 章 test_provision.py),这也应得到尊重:首先提供,然后第 2 章子测试......在示例chapter2 / test_provision.py中与测试在同一目录中,这与文件系统层次结构无关(尽管这可能是一个项目协议,并且可能应该是统一的:例如,在父目录或类似的东西上隔离的配置测试)。因此,我希望插入 pytest 标记或类似标记以在测试定义中创建依赖项,而不是在文件系统中。

如果这个想法难以实现,也许可以将一个简化标记为在达到时唯一执行的测试停止对所有收集的测试进行 pytest-xdist并行执行),然后,尽管其他人确实可以与之并行化,但我们可以牺牲这一点以获得更大的好处,即避免测试计划中的冲突(从而避免执行失败)。但这意味着更长的总执行时间,我宁愿避免这种解决方案

另外,我不想在开始时运行每个配置测试(例如pytest -m 'provisions' ; pytest -m 'others'),因为有些配置是上层配置的专业化,与其他分支配置兄弟不兼容。因此,从pytest-xdist的角度来看,每个测试在达到时都应按照设计的方式进行。

编辑:我的担忧可以理解为对特定pytest-xdist工作人员建立某种测试亲和力的要求。这是因为如果我确保某些目录由单个工作人员管理,我可以控制整个画面。

4

0 回答 0