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

时间:2012-03-22 15:49:15

标签: python windows unit-testing timeout

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

Timeout decorator看起来是最方便的方式,但不幸的是它无法在Windows上运行。

2 个答案:

答案 0 :(得分:1)

找到this基于线程的解决方案,但正如所提到的here,通常没有办法杀死Python中的线程,因此即使在线程“超时”之后它仍继续运行。但是,你可以使用this来实际终止线程,假设它没有被捆绑在C-land中。

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

答案 1 :(得分:-1)

我不明白为什么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')
相关问题