【发布时间】:2012-08-15 20:39:42
【问题描述】:
我在使用 python setUpClass 时遇到了一点问题。
例如考虑以下情况
class MyTest(unittest.case.TestCase):
@classmethod
def setUpClass(cls):
print "Test setup"
try:
1/0
except:
raise
@classmethod
def tearDownClass(cls):
print "Test teardown"
几个问题
上面的代码是处理测试setUpClass异常的正确方法吗(通过提高它以便python unittest可以处理它),有fail(),skip()方法,但只能是由测试实例而不是测试类使用。
当出现setUpClass异常时,如何保证tearDownClass运行(unittest不运行,要手动调用)。
【问题讨论】:
-
except: raise什么都不做。 (除了可能会弄乱堆栈跟踪,不确定。)您不妨将整个try..except屏蔽掉。 -
第二个问题:如果您认为您可能会引发异常,那么您应该使用
try..except(就像您拥有的那样)在异常上调用tearDownClass。之后,您可以重新引发异常。 -
感谢您的回复,正如 Jeff 所提到的,调用 tearDownClass 并引发异常的第二种方法是解决方案。
-
@millimoose,它不会弄乱堆栈跟踪。这就是
raise的意义所在。
标签: python unit-testing