timeout_decorator – 是否可以禁用或使其在Windows上工作?

我们为Chrome,Firefox和Safari开发扩展,并使用Seleniumtesting我们的Chrome和Firefox扩展。 我最近添加了timeout_decorator来停止testing,如果它们运行超过15分钟(你可以看到我以前的问题的答案),它可以在Linux(Ubuntu)上运行。 但问题是,它不适用于Windows。 这是我的代码:

 import timeout_decorator .... class BaseSeleniumTestCase(unittest.TestCase): .... @timeout_decorator.timeout(seconds=900) def _test_gmail_1_with_extension(self): .... 

testing类从BaseSeleniumTestCaseinheritance并运行testing。 我可以在每次在Windows中运行testing之前评论装饰器,但我想有一个更好的解决scheme,而不创build不同的testing。 但是可以调用另一个函数来检查我们是在Windows还是Linux,如果我们在Windows中,它将运行没有装饰器的testing,而在Linux中它将应用装饰器并运行testing。 有什么build议么?

您可以重新定义timeout_decorator以接受相同的签名,并在Windows上提供timeout_decorator操作:

 import os if os.name == 'nt': # We redefine timeout_decorator on windows class timeout_decorator: @staticmethod def timeout(*args, **kwargs): return lambda f: f # return a no-op decorator else: import timeout_decorator class BaseseleniumiumTestCase(unittest.TestCase): ... # Keep your class intact