当尝试对下面看到的代码片段进行单元测试时,我受到包装 calc_something
函数的装饰器给我的时间限制的限制。似乎我无法在我的单元测试中覆盖 RAND_RATE
从那时起我导入了包含我的实现的模块,装饰器已经包装了我的函数。我该如何解决这个问题?
RAND_RATE=20
RAND_PERIOD=10
@limits(calls=RAND_RATE, period=RAND_PERIOD)
def calc_something():
...
答案 0 :(得分:0)
在不确切知道 limits
的作用的情况下,我们不知道可以修补什么(如果有的话)。相反,保留基本实现未修饰以供单元测试使用。 calc_something
将保存为手动应用 limits
的单独结果。
RAND_RATE=20
RAND_PERIOD=10
def _do_calc():
...
calc_something = limits(calls=RAND_RATE, period=RAND_PERIOD)(_do_calc)
@limits(calls=RAND_RATE, period=RAND_PERIOD)
def calc_something():
...
现在在你的测试中,你可以定义任何你喜欢的装饰版本:
test_me = limits(10, 5)(my_module._do_calc)