如何测试Python函数完成时间是否小于某个值
我在使用Python的unittest框架。
我想写一个测试,确保某个方法在规定时间内完成。我可以通过计算开始时间和结束时间之间的差值来做到这一点,但我开始想,
- 在测试驱动开发中,通常会这样做吗?也就是说,写一些测试,如果某个方法/函数不够高效就让测试失败,然后再进行优化?
- Python的unittest有没有简单的方法来实现这个?
2 个回答
0
有些公司会对代码的运行速度进行测试,这种测试有点像回归测试,主要是为了发现新代码是否会让系统变慢。如果发现了问题,首先会尝试修复新代码,让它依然表现良好。如果修复不了,那么产品负责人就可以决定这个新功能是否值得保留。
关于测试驱动开发(TDD):你并不知道代码的运行时间,所以不能凭猜测写一个测试,然后再修改代码让它通过测试……除非你在做一些非常具体的事情,比如嵌入式系统,它必须在50毫秒内做出响应……
2
你可以使用nose库里的@timed装饰器来实现这个功能。我用它来测试函数的执行时间。下面是一个例子:
@timed(2.1)
def test():
func_with_timeout(timeout=2)