使用nosetests进行测试超时

Jus*_*tMe 10 python nose nosetests python-2.7

我正在设置我的nosetests环境,但似乎无法让超时工作正常.我希望x在鼻子发现的每个测试中有第二个(比如说2)超时.

我尝试了以下方法:

nosetests --processes=-1 --process-timeout=2
Run Code Online (Sandbox Code Playgroud)

这工作得很好,但我注意到以下几点:

  • 对于一些简单的测试用例,并行测试需要更长的时间
  • 当测试超时(因此失败)时,Nose不报告

有谁知道如何让这样的超时工作?我希望它能在没有并行测试的情况下工作,但只要我得到测试超时的反馈,这就不会成为问题.

Ole*_*siy 11

我不知道这是否会让你的生活更轻松,但是有一个类似的功能nose.tools会在超时时失败,你不必为它进行并行测试:

from nose.tools import timed

@timed(2)
def test_a():
    sleep(3)
Run Code Online (Sandbox Code Playgroud)

您可以使用脚本/插件自动装饰模块中的所有测试,如果手动添加属性是一个问题,但我个人更喜欢清晰而不是魔术.

通过查看Lib/site-packages/nose/plugins/multiprocess.py源代码,看起来process-timeout您正在使用的选项有点特定于管理可能阻止测试完成的"挂起"子进程.

  • 我试过这个并且不高兴.这是我在我的代码中输入的内容:import nose.tools.timed #Warning,这不做广告,不要使用,此行留下警告#nose.tools.timed不限制测试的时间运行,它运行测试,如果花费太长时间#然后它引发TimeExpired(),这既不提供运行时间的限制,也不提供延长测试的#运行时间的方法,该测试需要比鼻子更长的时间 - 广泛的测试限制.为什么有人会用这个? (4认同)
  • 按预期工作,谢谢!虽然我更喜欢命令行选项来为所有测试脚本设置超时,但我将继续这种方法.这实际上允许我为特定功能设置超时,这些功能预计比其他功能需要更长的时间 (2认同)