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选项看起来特定于管理"挂起"子流程,这些子流程可能会阻止测试完成。
-
符合预期,谢谢! 尽管我希望使用命令行选项为所有测试脚本设置超时时间,但我将继续使用这种方法。 实际上,这将允许我为某些特定功能设置超时时间,这些功能预计将比其他功能花费更长的时间
-
我试过了,很不高兴。 这是我在代码中输入的内容:import tail.tools.timed#警告,此操作不做广告,请勿使用,此行保留为警告#鼻子.tools.timed不限制测试必须运行的时间, 它运行测试,并且如果花费的时间太长,则会引发TimeExpired(),这既不提供运行时间的限制,也不提供一种延长测试时间的方法,该方法花费的时间超过了鼻子宽的时间。 -测试极限。 为什么有人会使用这个?