使用nosetests进行测试超时

时间:2014-05-13 08:06:49

标签: python python-2.7 nose nosetests

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

我尝试了以下内容:

nosetests --processes=-1 --process-timeout=2

这很好用,但我注意到以下几点:

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

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

1 个答案:

答案 0 :(得分:10)

我不知道这是否会让您的生活更轻松,但nose.tools中的类似功能会在超时时失败,您无需进行并行测试:

from nose.tools import timed

@timed(2)
def test_a():
    sleep(3)

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

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