【问题标题】:Timeout on tests with nosetests用鼻子测试超时
【发布时间】:2014-05-14 13:22:18
【问题描述】:

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

我尝试了以下方法:

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

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

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

有谁知道我怎样才能让这样的超时工作?我希望它在没有并行测试的情况下工作,但只要我收到测试已超时的反馈,这将不是问题。

【问题讨论】:

    标签: python python-2.7 nose nosetests


    【解决方案1】:

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

    from nose.tools import timed
    
    @timed(2)
    def test_a():
        sleep(3)
    

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

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

    【讨论】:

    • 按预期工作,谢谢!虽然我更喜欢命令行选项来为所有测试脚本设置超时,但我将继续使用这种方法。这实际上将允许我为特定功能设置超时,这些功能预计需要比其他功能更长的时间
    • 我试过这个但很不高兴。这是我在我的代码中输入的内容: import nose.tools.timed # 警告,这不像广告那样做,不要使用,这一行留下警告 #nose.tools.timed 不限制测试的时间运行,它运行测试,如果它花费了太长时间,那么它会引发 TimeExpired(),这既没有提供运行时间的界限,也没有一种方法来延长测试的运行时间,这需要比鼻子更长的时间-宽的每次测试限制。为什么有人会使用它?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    • 2010-10-27
    相关资源
    最近更新 更多