我想要并行运行几千个测试。测试是所有编译的二进制文件,它们返回代码为0或非零(失败时)。它们的一些未知子集尝试使用相同的资源(文件,端口等)。每个测试都假定它是独立运行的,如果资源不可用则报告失败。
我正在使用Python使用子进程模块启动每个测试,并且串行工作非常好。我查看了Nose的并行化,但我需要自动生成测试(将1000多个二进制文件中的每一个包装到使用子进程的Python类中),而Nose的多处理模块不支持并行化自动生成的测试。
我最终决定使用PyTest,因为它可以使用xdist插件通过SSH在远程主机上运行自动生成的测试。
但是,据我所知,xdist看起来不支持对测试如何分配的任何控制。我想给它一个N台机器池,每台机器运行一次。
PyTest / xdist是我想要的吗?如果没有,那么有没有可以做我正在寻找的工具?
答案 0 :(得分:0)
我不确定这是否会有所帮助。但是如果你提前知道如何划分测试,而不是让pytest分发测试,你可以使用持续集成服务器为每台不同的机器调用不同的pytest。使用-k或-m选择测试子集,或者只是指定不同的测试目录路径,您可以控制哪些测试一起运行。