我有几千个测试要并行运行。测试都是编译后的二进制文件,返回代码为 0 或非零(失败时)。它们中的一些未知子集尝试使用相同的资源(文件、端口等)。每个测试都假定它是独立运行的,如果资源不可用,则只报告失败。
我正在使用 Python 使用 subprocess 模块启动每个测试,并且连续运行非常好。我研究了 Nose 进行并行化,但我需要自动生成测试(将 1000 多个二进制文件中的每一个包装到使用子进程的 Python 类中),并且 Nose 的多处理模块不支持并行化自动生成的测试。
我最终选择了 PyTest,因为它可以使用 xdist 插件通过 SSH 在远程主机上运行自动生成的测试。
但是,据我所知,xdist 似乎不支持对测试的分发方式进行任何控制。我想给它一个由 N 台机器组成的池,并在每台机器上运行一次测试。
PyTest/xdist 可以实现我想要的吗?如果没有,是否有可以做我正在寻找的工具?