我有很多'长时间测试',我必须等待一些相对较大的超时(分钟)。 例如,我在测试中调用了一些API,等待15分钟,然后检查网页上的更改。
所以问题是 - 如何暂停某些测试,但在等待时进行其他测试。 我不能只使用睡眠() - 在这种情况下完整的测试套装将持续数小时(15分钟*(此类测试的数量))。
我看到的一个解决方案 - 安排测试(使用钩子pytest_collection_modifyitems):
但那只是一团糟,很难管理。
这产生了许多在(1)中运行的虚拟测试 - 事实上这就像测试设置,我不需要它们的结果,但pytest会将它们视为单独的测试。
UPD xdist没有多大帮助 - 即使我可以控制它如何并行化测试(在哪些组中同时运行),我将不得不并行运行所有长时间的测试,因为我想做一些有用的事情。等待,而不仅仅是等待(15分钟*(长测试次数))/(xdist进程数)。
这似乎是唯一的方法 - 修补pytest的主循环。所以它会异步运行测试。但我甚至不知道从哪里开始这样做..
答案 0 :(得分:0)
有一个pytest-xdist
plugin for pytest可以启用测试运行并行化。也就是说,您的测试将同时由多个进程(在多个CPU上)同时运行。这并没有完全达到你所要求的 - 它不能暂停长时间运行的测试 - 但它确实允许其他测试在长时间运行的测试运行的同时运行
如果你可以编辑你的问题来描述你的意思"第一部分"和"第二部分"测试,我或许可以给出更好的答案。