@@ -130,9 +130,12 @@ def _handleClassSetUp(self, test, result):
130130 if setUpClass is not None :
131131 try :
132132 setUpClass ()
133- except :
133+ except Exception as e :
134134 currentClass ._classSetupFailed = True
135- self ._addClassSetUpError (result , currentClass )
135+ className = util .strclass (currentClass )
136+ errorName = 'classSetUp (%s)' % className
137+ self ._addClassOrModuleLevelException (result , e , errorName )
138+
136139
137140 def _get_previous_module (self , result ):
138141 previousModule = None
@@ -150,7 +153,6 @@ def _handleModuleFixture(self, test, result):
150153
151154 self ._handleModuleTearDown (result )
152155
153-
154156 result ._moduleSetUpFailed = False
155157 try :
156158 module = sys .modules [currentModule ]
@@ -160,10 +162,18 @@ def _handleModuleFixture(self, test, result):
160162 if setUpModule is not None :
161163 try :
162164 setUpModule ()
163- except :
165+ except Exception , e :
164166 result ._moduleSetUpFailed = True
165- error = _ErrorHolder ('setUpModule (%s)' % currentModule )
166- result .addError (error , sys .exc_info ())
167+ errorName = 'setUpModule (%s)' % currentModule
168+ self ._addClassOrModuleLevelException (result , e , errorName )
169+
170+ def _addClassOrModuleLevelException (self , result , exception , errorName ):
171+ error = _ErrorHolder (errorName )
172+ addSkip = getattr (result , 'addSkip' , None )
173+ if addSkip is not None and isinstance (exception , case .SkipTest ):
174+ addSkip (error , str (exception ))
175+ else :
176+ result .addError (error , sys .exc_info ())
167177
168178 def _handleModuleTearDown (self , result ):
169179 previousModule = self ._get_previous_module (result )
@@ -181,9 +191,9 @@ def _handleModuleTearDown(self, result):
181191 if tearDownModule is not None :
182192 try :
183193 tearDownModule ()
184- except :
185- error = _ErrorHolder ( 'tearDownModule (%s)' % previousModule )
186- result . addError ( error , sys . exc_info () )
194+ except Exception as e :
195+ errorName = 'tearDownModule (%s)' % previousModule
196+ self . _addClassOrModuleLevelException ( result , e , errorName )
187197
188198 def _tearDownPreviousClass (self , test , result ):
189199 previousClass = getattr (result , '_previousTestClass' , None )
@@ -201,18 +211,10 @@ def _tearDownPreviousClass(self, test, result):
201211 if tearDownClass is not None :
202212 try :
203213 tearDownClass ()
204- except :
205- self ._addClassTearDownError (result )
206-
207- def _addClassTearDownError (self , result ):
208- className = util .strclass (result ._previousTestClass )
209- error = _ErrorHolder ('classTearDown (%s)' % className )
210- result .addError (error , sys .exc_info ())
211-
212- def _addClassSetUpError (self , result , klass ):
213- className = util .strclass (klass )
214- error = _ErrorHolder ('classSetUp (%s)' % className )
215- result .addError (error , sys .exc_info ())
214+ except Exception , e :
215+ className = util .strclass (previousClass )
216+ errorName = 'classTearDown (%s)' % className
217+ self ._addClassOrModuleLevelException (result , e , errorName )
216218
217219
218220class _ErrorHolder (object ):
0 commit comments