Python 在Windows上进行pytest超时失败测试

Python 在Windows上进行pytest超时失败测试,python,multithreading,testing,timeout,pytest,Python,Multithreading,Testing,Timeout,Pytest,在pytest中,我可以使用pytest timeout为测试指定超时,但它会终止测试运行,而不是测试失败。 现有的解决方案使用信号,但它只适用于Unix系统。 是否有可能在超时后不使用SIGALRM而导致功能失败。 使用conftest.py(例如add)运行 @pytest.hookimpl(hookwrapper=True) def pytest_runtest_protocol(item, nextitem): if item.config.option.timeout is

在pytest中,我可以使用pytest timeout为测试指定超时,但它会终止测试运行,而不是测试失败。 现有的解决方案使用信号,但它只适用于Unix系统。 是否有可能在超时后不使用SIGALRM而导致功能失败。 使用conftest.py(例如add)运行

@pytest.hookimpl(hookwrapper=True)
def pytest_runtest_protocol(item, nextitem):

    if item.config.option.timeout is not None:
        t = Timer(item.config.option.timeout)
    try:
        t.start()
        yield
    finally:
        t.stop
但我如何在另一个线程中使用计时器测试失败? 我想尝试将pytest.fail从这个线程发送到主线程,但这似乎是不可能的。 引发异常也会影响此新线程,但不会影响带有测试的线程。
有什么方法可以做到这一点吗?

看看这个插件-->它在使用SIGALRM的fox Unix系统上测试失败。将其与WinFows进行类比的问题您是否尝试过该插件?是的。但它终止了进程而不是测试失败。来自文档:对于每个测试项,pytest timeout插件启动一个计时器线程,该线程将在指定的超时后终止整个过程。还有一种信号方法无法通过测试,但它仅适用于Unix系统。