test_ok1/py/test/compat.py

60 lines
1.7 KiB
Python

import py
from py.__.test.outcome import Failed, Passed
class TestCaseUnit(py.test.collect.Function):
""" compatibility Unit executor for TestCase methods
honouring setUp and tearDown semantics.
"""
def execute(self, session):
boundmethod = self.obj
instance = boundmethod.im_self
instance.setUp()
try:
boundmethod()
finally:
instance.tearDown()
return Passed()
class TestCase(object):
"""compatibility class of unittest's TestCase. """
Function = TestCaseUnit
def setUp(self):
pass
def tearDown(self):
pass
def fail(self, msg=None):
""" fail immediate with given message. """
raise Failed(msg=msg)
def assertRaises(self, excclass, func, *args, **kwargs):
py.test.raises(excclass, func, *args, **kwargs)
failUnlessRaises = assertRaises
# dynamically construct (redundant) methods
aliasmap = [
('x', 'not x', 'assert_, failUnless'),
('x', 'x', 'failIf'),
('x,y', 'x!=y', 'failUnlessEqual,assertEqual, assertEquals'),
('x,y', 'x==y', 'failIfEqual,assertNotEqual, assertNotEquals'),
]
items = []
for sig, expr, names in aliasmap:
names = map(str.strip, names.split(','))
sigsubst = expr.replace('y', '%s').replace('x', '%s')
for name in names:
items.append("""
def %(name)s(self, %(sig)s, msg=""):
__tracebackhide__ = True
if %(expr)s:
raise Failed(msg=msg + (%(sigsubst)r %% (%(sig)s)))
""" % locals() )
source = "".join(items)
exec py.code.Source(source).compile()
__all__ = ['TestCase']