make the mixin look more like the python core unittest context managers

This commit is contained in:
Brian Stinson 2015-07-20 00:09:45 -05:00
parent 5becc45d19
commit 484791222d

View file

@ -1,17 +1,15 @@
import os
import sys
import unittest
import warnings
sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)),
'../src'))
class CatchWarningsMixin(object):
class assertWarns(object):
def __init__(self, warningtype, msg=''):
class _AssertWarnsContext(object):
def __init__(self, warningtype, testcase, msg=''):
self.warningtype = warningtype
warnings.filterwarnings('error')
self.failureException = unittest.TestCase.failureException
self.failureException = testcase.failureException
def __enter__(self):
return self
@ -30,3 +28,11 @@ class CatchWarningsMixin(object):
(self.warningtype.__name__, str(exc_type.__name__)))
return True
class CatchWarningsMixin(object):
def assertWarns(self, wrnClass, callableObj=None, *args, **kwargs):
context = _AssertWarnsContext(wrnClass, self)
if callableObj is None:
return context
with context:
callableObj(*args, **kwargs)