123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- """Tools so trivial that tracebacks should not descend into them
- We define the ``__unittest`` symbol in their module namespace so unittest will
- skip them when printing tracebacks, just as it does for their corresponding
- methods in ``unittest`` proper.
- """
- import re
- import unittest
- __all__ = ['ok_', 'eq_']
- # Use the same flag as unittest itself to prevent descent into these functions:
- __unittest = 1
- def ok_(expr, msg=None):
- """Shorthand for assert. Saves 3 whole characters!
- """
- if not expr:
- raise AssertionError(msg)
- def eq_(a, b, msg=None):
- """Shorthand for 'assert a == b, "%r != %r" % (a, b)
- """
- if not a == b:
- raise AssertionError(msg or "%r != %r" % (a, b))
- #
- # Expose assert* from unittest.TestCase
- # - give them pep8 style names
- #
- caps = re.compile('([A-Z])')
- def pep8(name):
- return caps.sub(lambda m: '_' + m.groups()[0].lower(), name)
- class Dummy(unittest.TestCase):
- def nop():
- pass
- _t = Dummy('nop')
- for at in [ at for at in dir(_t)
- if at.startswith('assert') and not '_' in at ]:
- pepd = pep8(at)
- vars()[pepd] = getattr(_t, at)
- __all__.append(pepd)
- del Dummy
- del _t
- del pep8
|