问题描述
我一直在研究Kent Beck的示例驱动测试开发,尤其是xUnit示例(第18-24章)。我对拆卸功能有一些疑问。最初,测试运行流程是通过以下方法在类run()
上作为方法TestCase
实现的
def run(self):
result = TestResult()
result.testStarted()
self.setUp()
method = self.getattr(self,self.name)
method()
self.tearDown()
return result
完成此操作后,他会作为练习供读者更改方法run()
,以便即使method()
失败时也要执行拆卸逻辑。
但是,在下一章(处理失败)中,方法run()
进行了扩展以记录测试失败:
def run(self):
result = TestResult()
result.testStarted()
self.setUp()
try:
method = self.getattr(self,self.name)
method()
except:
result.testFailed()
self.tearDown()
return result
此编辑后,与拆解逻辑有关的项目仍在待办事项列表上打开,但对我来说问题似乎已解决。 except
子句尽可能地笼统,并且操作result.testFailed()
绝不会引发异常。因此,在我看来,无论method()
可以做什么,拆卸逻辑都会始终被执行。我可以想象将拆解放在finally
子句中,以更好地表示意图,并且对testFailed()
中的更改更加健壮,但是当{{1 }}有这种形式吗?
解决方法
本练习可以帮助您学习。它为“应对失败”做好了准备。