我有几千个测试要并行运行。这些测试都是编译后的二进制文件,返回代码为0或非零(失败时)。其中一些未知的子集试图使用相同的资源(文件、端口等)。每个测试都假设它是独立运行的,并且只在资源不可用时报告失败。
我使用Python使用子进程模块启动每个测试,这非常好用。我研究了Nose以实现并行化,但我需要自动生成测试(将每个1000+二进制文件包装到使用子进程的Python类中),而且Nose的多处理模块不支持并行化自动生成的测试。
我最终选择了PyTest,因为它可以使用xdist插件通过SSH在远程主机上运行自动生成的测试。
但是,据我所知,xdist似乎不支持对如何分发测试的任何控制。我想给它一个N台机器的池,并让每台机器有一次测试运行。
使用PyTest/xdist可以实现我想要的吗?如果没有,有没有工具可以做我想要的?
发布于 2014-08-01 13:23:30
我不确定这是否会有帮助。但是,如果您提前知道如何划分测试,而不是让pytest分发测试,那么您可以使用持续集成服务器为每台不同的机器调用不同的pytest运行。使用-k或-m选择测试的子集,或者简单地指定不同的测试目录路径,您可以控制一起运行哪些测试。
https://stackoverflow.com/questions/15260422
复制相似问题