用于Windows单元测试的Python超时装饰器



我想要一种简单的方法来测试特定方法是否在分配的时间内返回。

超时装饰器看起来是最方便的方法,但不幸的是,它在Windows上不起作用。

找到了这个基于线程的解决方案,但正如这里所指出的,在Python中通常没有办法杀死线程,所以即使在线程"超时"后,它也会继续运行。然而,您可以使用它来实际终止线程,假设它没有被束缚在C-land中。

不幸的是,这不是一个现成的食谱,但看起来它有你需要的所有部分。

我不明白为什么Timeout Decorator不能在windows上工作?

如果这是永久性的,并且不仅仅是为了调试目的,那么可以在方法中使用for-else循环。

def methodName(timeout):
   for i in range(timout):
       if done_doing_task:
           break
   else: #will only be executed if we don't break out of the for loop
       raise Exception('method methodName timed out')

最新更新