1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

"""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