我有一些测试用例。测试用例依赖于需要时间计算的数据。为了加快测试速度,我缓存了数据,这样就不必重新计算了。
我现在有foo()
,它查看缓存的数据。我无法提前告诉它会看到什么,因为这在很大程度上取决于测试用例。
如果测试用例失败导致它找不到正确的缓存数据,我不希望它失败 - 我希望它计算数据然后重试。我也不知道特别是什么异常会引发丢失数据的原因。
我的代码现在看起来像这样:
if cacheExists:
loadCache()
dataComputed = False
else:
calculateData()
dataComputed = True
try:
foo()
except:
if not dataComputed:
calculateData()
dataComputed = True
try:
foo()
except:
#error handling code
else:
#the same error handling code
重构此代码的最佳方法是什么?