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

2024-09-27 18:07:09 发布

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

我们为Chrome、Firefox和Safari开发扩展,并使用Selenium测试我们的Chrome和Firefox扩展。我最近添加了timeout_decorator来停止运行超过15分钟的测试(您可以看到我的former question的答案),它可以在Linux(Ubuntu)上运行。但问题是,它在Windows上不起作用。这是我的代码:

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

测试类从BaseSeleniumTestCase继承并运行测试。每次在Windows中运行测试之前,我都可以对decorator进行注释,但是我希望有一个更好的解决方案,而不需要创建不同的测试。但是可以调用另一个函数来检查我们是否在Windows或Linux中,如果我们在Windows中,它将运行没有decorator的测试,在Linux中它将应用decorator并运行测试。有什么建议吗?在


Tags: 答案代码importubuntulinuxwindowsseleniumtimeout
1条回答
网友
1楼 · 发布于 2024-09-27 18:07:09

您可以重新定义timeout_decorator以接受相同的签名并在windows上提供no-op:

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 BaseSeleniumTestCase(unittest.TestCase):
    ... # Keep your class intact

相关问题 更多 >

    热门问题