我正在设置我的nosetests环境,但好像无法正确地使超时功能发挥作用。我想在nose发现的每个测试中都设置一个x秒(比如2秒)的超时时间。
我尝试了以下方法:
nosetests --processes=-1 --process-timeout=2
这个方案很好,但我注意到以下几点:
- 对于一些简单的测试用例,并行测试需要更长时间
- Nose在测试超时(因此失败)时不会报告回来
有人知道如何使超时功能正常工作吗?我希望它可以在没有并行测试的情况下工作,但只要我能得到测试超时的反馈,这不是问题。
nose.tools.timed 模块无法限制测试运行时间,它只是运行测试,如果测试用时超过了规定时间,
则会引发 TimeExpired() 异常,这既没有约束测试运行时间的上限,也没有一种方式可以延长运行时间。
那么为什么会有人使用它呢?
- Jimnose.tools.timed
非常有用,可以检查S3网络重试策略所需的时间是否与其所说的一样长。测试应该需要例如0.8秒,如果超过1秒,就会失败。通常很难限制测试运行的时间,因为必须通过操作系统机制强制停止进程。另一方面,nose.tools.timed
函数对于非常具体的用例而言是简单且有用的。它让我想起了pytest-timeout
软件包的免责声明(它实现了你想要的功能):“这不是你要找的超时时间!” - llude