mirror of
https://github.com/rembo10/headphones.git
synced 2026-05-02 09:49:36 +01:00
Improved testing approach (many testcases in decorators)
This commit is contained in:
@@ -19,14 +19,60 @@ class TestCase(TC):
|
|||||||
"""
|
"""
|
||||||
Wrapper for python 2.6 stubs
|
Wrapper for python 2.6 stubs
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
def assertIsInstance(self, obj, cls, msg=None):
|
||||||
|
if not _dummy:
|
||||||
|
return super(TestCase, self).assertIsInstance(obj, cls, msg)
|
||||||
|
tst = isinstance(obj, cls)
|
||||||
|
return self.assertTrue(tst, msg)
|
||||||
|
|
||||||
@_d
|
@_d
|
||||||
def assertIsInstance(self, *args, **kw):
|
def assertNotIsInstance(self, *args, **kw):
|
||||||
return super(TestCase, self).assertIsInstance(*args, **kw)
|
return super(TestCase, self).assertNotIsInstance(*args, **kw)
|
||||||
|
|
||||||
@_d
|
@_d
|
||||||
def assertIn(self, *args, **kw):
|
def assertIn(self, *args, **kw):
|
||||||
return super(TestCase, self).assertIn(*args, **kw)
|
return super(TestCase, self).assertIn(*args, **kw)
|
||||||
|
|
||||||
@_d
|
def assertIsNotNone(self, val, msg=None):
|
||||||
def assertIsNotNone(self, *args, **kw):
|
if not _dummy:
|
||||||
return super(TestCase, self).assertIsNotNone(*args, **kw)
|
return super(TestCase, self).assertIsNotNone(val, msg)
|
||||||
|
tst = val is not None
|
||||||
|
return super(TestCase, self).assertTrue(val, msg)
|
||||||
|
|
||||||
|
class _TestCaseRaiseStub:
|
||||||
|
def __init__(self, exc, tc):
|
||||||
|
self.exc = exc
|
||||||
|
self.tc = tc
|
||||||
|
def __enter__(self):
|
||||||
|
return self
|
||||||
|
def __exit__(self, tp, value, traceback):
|
||||||
|
tst = tp is self.exc
|
||||||
|
self.tc.assertTrue(tst)
|
||||||
|
self.exception = value
|
||||||
|
return True
|
||||||
|
|
||||||
|
def assertRaises(self, exc, msg = None):
|
||||||
|
if not _dummy:
|
||||||
|
return super(TestCase, self).assertRaises(exc, msg)
|
||||||
|
return TestCase._TestCaseRaiseStub(exc, self)
|
||||||
|
|
||||||
|
def TestArgs(*parameters):
|
||||||
|
def tuplify(x):
|
||||||
|
if not isinstance(x, tuple):
|
||||||
|
return (x,)
|
||||||
|
return x
|
||||||
|
|
||||||
|
def decorator(method, parameters=parameters):
|
||||||
|
for parameter in (tuplify(x) for x in parameters):
|
||||||
|
|
||||||
|
def method_for_parameter(self, method=method, parameter=parameter):
|
||||||
|
method(self, *parameter)
|
||||||
|
args_for_parameter = ",".join(repr(v) for v in parameter)
|
||||||
|
name_for_parameter = method.__name__ + "(" + args_for_parameter + ")"
|
||||||
|
frame = sys._getframe(1) # pylint: disable-msg=W0212
|
||||||
|
frame.f_locals[name_for_parameter] = method_for_parameter
|
||||||
|
frame.f_locals[name_for_parameter].__doc__ = method.__doc__ + '(' + args_for_parameter + ')'
|
||||||
|
method_for_parameter.__name__ = name_for_parameter + '(' + args_for_parameter + ')'
|
||||||
|
return None
|
||||||
|
return decorator
|
||||||
|
|||||||
Reference in New Issue
Block a user