我可以将pytest-xdist并行执行条件设置为具有测试依赖项吗?

时间:2020-05-14 10:19:34

标签: dependencies pytest hierarchy pytest-xdist

我正在发现 pytest-xdist 与依赖相关的插件(例如 pytest-dependency )的某种组合(但似乎有些不兼容,最好说一下,they don't get along)或具有相同problems 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处停止以串行方式运行,然后并行运行各章,依此类推。某些章节可能也有约束条件(即Chapter2 test_provision.py),这也应得到遵守:首先提供,然后进行Chapter2子测试... 在示例chapter2 / test_provision.py与测试位于同一目录中,这与文件系统层次结构的组织无关(尽管这可能是项目协议,并且可能应该是统一的:例如,在父目录或其他内容上隔离供应测试)像这样)。因此,我希望在测试定义而不是文件系统上插入pytest标记或类似标记来创建依赖项。

如果这个想法难以实现,也许可以简化一下将测试标记为在达到目标时唯一执行从整体上停止pytest-xdist 并行执行一堆收集的测试),尽管确实可以与其他测试并行化,但我们可以为了更大的利益而牺牲它,避免测试计划中的冲突(从而避免执行失败)。 但这意味着更长的总执行时间,并且我宁愿避免这种解决方案

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

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

0 个答案:

没有答案