如何暂停py.测试测试并在等待时做其他测试?

2024-10-02 14:27:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有很多“长测试”,我必须等待一些相对较大的超时(分钟)。 例如,我在测试中调用一些API,等待15分钟,然后检查web页面是否有更改。在

所以问题是-如何暂停一些测试,而在等待的时候执行其他测试。 我不能只使用sleep()-在这种情况下,完整的测试服将持续数小时(15分钟*(此类测试的次数))。在

我看到的一个解决方案-安排测试(使用hook pytest_collection_modifyitems):

  1. 运行所有长测试的第一部分(暂停15分钟前)(在上面的长测试示例中调用API)
  2. 运行所有短期测试
  3. (可选)如果(2)所用时间少于15分钟,请稍等
  4. 运行所有长测试的第二部分(暂停后)(检查上面示例中的网页)

但那将是一个大混乱,很难管理。在

这就产生了很多在(1)中运行的虚拟测试——事实上,这类似于测试设置,我不需要它们的结果,但是pytest仍然将它们视为单独的测试。在

UPD xdist没有多大帮助—即使我可以控制它如何并行化测试(在这些组中同时运行),我也必须并行运行所有长的测试,因为我想在等待的时候做一些有用的事情,而不仅仅是等待(15分钟*(长测试数))/(xdist进程数)。在

这似乎是唯一的方法-修补pytest的主循环。所以它将异步运行测试。但我甚至不知道从哪里开始。。在


Tags: apiweb示例pytest情况sleep页面解决方案
1条回答
网友
1楼 · 发布于 2024-10-02 14:27:07

有一个^{} plugin for pytest启用测试运行并行化。也就是说,您的测试将同时由多个进程(在多个cpu上)运行。这并不完全符合您的要求,它不会暂停长时间运行的测试,但它确实允许其他测试在长时间运行的测试运行的同时运行。在

如果你能编辑你的问题来描述你所说的“第一部分”和“第二部分”是什么意思,我也许能给出一个更好的答案。在

相关问题 更多 >