使用py.test xdist控制测试分发
我有几千个测试想要同时运行。这些测试都是编译好的程序,运行后会返回一个代码,0表示成功,非零表示失败。有些测试会尝试使用相同的资源(比如文件、端口等),但具体哪些测试会冲突我并不清楚。每个测试都认为自己是独立运行的,如果某个资源不可用,它就会报告失败。
我正在用Python的subprocess模块来启动每个测试,这样顺序执行是没问题的。我考虑过使用Nose来实现并行测试,但我需要自动生成测试代码(把每个1000多个程序封装成一个使用subprocess的Python类),而Nose的多进程模块不支持自动生成的测试并行。
最后我选择了PyTest,因为它可以通过xdist插件在远程主机上运行自动生成的测试,使用SSH连接。
不过,按照我所了解的,xdist似乎不支持控制测试的分配方式。我希望能指定一组N台机器,让每台机器上运行一个测试。
我想要的功能在PyTest/xdist中可以实现吗?如果不行,有没有其他工具可以满足我的需求?
1 个回答
0
我不太确定这是否有帮助。不过,如果你提前知道想怎么划分你的测试,而不是让pytest自动分配测试,你可以让你的持续集成服务器在每台不同的机器上调用一次pytest。你可以使用-k或-m来选择一部分测试,或者直接指定不同的测试目录路径,这样你就可以控制哪些测试是一起运行的。