3

我有几千个测试要并行运行。测试都是编译后的二进制文件,返回代码为 0 或非零(失败时)。它们中的一些未知子集尝试使用相同的资源(文件、端口等)。每个测试都假定它是独立运行的,如果资源不可用,则只报告失败。

我正在使用 Python 使用 subprocess 模块启动每个测试,并且连续运行非常好。我研究了 Nose 进行并行化,但我需要自动生成测试(将 1000 多个二进制文件中的每一个包装到使用子进程的 Python 类中),并且 Nose 的多处理模块不支持并行化自动生成的测试。

我最终选择了 PyTest,因为它可以使用 xdist 插件通过 SSH 在远程主机上运行自动生成的测试。

但是,据我所知,xdist 似乎不支持对测试的分发方式进行任何控制。我想给它一个由 N 台机器组成的池,并在每台机器上运行一次测试。

PyTest/xdist 可以实现我想要的吗?如果没有,是否有可以做我正在寻找的工具?

4

1 回答 1

0

我不确定这是否会有所帮助。但是,如果您提前知道要如何划分测试,而不是让 pytest 分发您的测试,您可以使用持续集成服务器为每台不同的机器调用不同的 pytest 运行。使用 -k 或 -m 选择测试子集,或者简单地指定不同的测试目录路径,您可以控制哪些测试一起运行。

于 2014-08-01T05:23:29.530 回答