关于python:使用鼻子测试的测试超时

Timeout on tests with nosetests

我正在设置我的鼻子测试环境,但似乎无法使超时正常工作。 我想通过鼻子发现的每个测试都有一个x秒(例如2)超时。

我尝试了以下方法:

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

这工作正常,但我注意到以下几点:

  • 对于几个简单的测试用例,并行测试花费的时间更长
  • 测试超时(因此失败)时,鼻子不会报告

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


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

1
2
3
4
5
from nose.tools import timed

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

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

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