如何测试Python函数完成时间是否小于某个值

2 投票
2 回答
970 浏览
提问于 2025-04-17 05:04

我在使用Python的unittest框架。

我想写一个测试,确保某个方法在规定时间内完成。我可以通过计算开始时间结束时间之间的差值来做到这一点,但我开始想,

  1. 测试驱动开发中,通常会这样做吗?也就是说,写一些测试,如果某个方法/函数不够高效就让测试失败,然后再进行优化?
  2. Python的unittest有没有简单的方法来实现这个?

2 个回答

0

有些公司会对代码的运行速度进行测试,这种测试有点像回归测试,主要是为了发现新代码是否会让系统变慢。如果发现了问题,首先会尝试修复新代码,让它依然表现良好。如果修复不了,那么产品负责人就可以决定这个新功能是否值得保留。

关于测试驱动开发(TDD):你并不知道代码的运行时间,所以不能凭猜测写一个测试,然后再修改代码让它通过测试……除非你在做一些非常具体的事情,比如嵌入式系统,它必须在50毫秒内做出响应……

2

你可以使用nose库里的@timed装饰器来实现这个功能。我用它来测试函数的执行时间。下面是一个例子:

@timed(2.1)
def test():
    func_with_timeout(timeout=2)

撰写回答