gpt4 book ai didi

python - 为什么 pytest 一旦单元测试(@pytest.mark.timeout(3))超时就退出?

转载 作者:太空宇宙 更新时间:2023-11-03 21:42:25 35 4
gpt4 key购买 nike

我安装了pytestpytest-timeout,我按照https://pypi.org/project/pytest-timeout/pytest-timeout的说明进行操作。为每个单元测试设置超时。

我只想在超时的情况下使单元测试失败,并继续运行其他单元测试。

请查看我的单元测试代码:

# content of test_log.py
import time
import pytest

class TestDemo(object):
@pytest.mark.timeout(60)
def test_01(self):
time.sleep(2)
assert "1"

@pytest.mark.timeout(3)
def test_02(self):
time.sleep(4)
assert "1"

@pytest.mark.timeout(3)
def test_03(self):
time.sleep(1)
assert "1"

现在的问题是,我在Windows 7中运行这段代码,一旦第二次超时,测试就会停止,第三次单元测试也不会运行。

我的日志如下:

D:\dev\pyteSTLog>pytest

==================测试 session 开始==============

平台 win32 -- Python 3.6.4、pytest-3.8.2、py-1.5.3、pluggy-0.7.1根目录:D:\dev\pyteSTLog,ini文件:插件:timeout-1.3.2、instafail-0.4.0收集了 3 件元素

test_log.py

++++++++++++++++++++++++++ 超时++++++++++++++++++++++++++

~~~~~~~~~~~~~~~ 主线程堆栈 (17636) ~~~~~~~~~~~~~~~

文件“c:\python36-32\lib\runpy.py”,第 193 行,在 _run_module_as_main 中 “主要”,mod_spec) 文件“c:\python36-32\lib\runpy.py”,第 85 行,在 _run_code 中 exec(代码,run_globals)

...(此处日志太多)

文件“D:\dev\pyteSTLog\test_log.py”,第 15 行,位于 test_02 时间. sleep (4)

++++++++++++++++++++++++++ 超时++++++++++++++++++++++++++

D:\dev\pyteSTLog>

最佳答案

作为替代方案,您可以使用超时装饰器,如以下链接所示:

timeout decorator in windows

测试代码应如下所示:

# content of test_log.py
import time
from timeout import timeout

class TestDemo(object):
@timeout(60)
def test_01(self):
time.sleep(2)
assert "1"

@timeout(3)
def test_02(self):
time.sleep(4)
assert "1"

@timeout(3)
def test_03(self):
time.sleep(1)
assert "1"

关于python - 为什么 pytest 一旦单元测试(@pytest.mark.timeout(3))超时就退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52753330/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com