Context Manager =============== Snippets about with blocks. open and close files -------------------- :: with open('data.txt') as f: data = f.read() threading locks --------------- :: lock = threading.Lock() with lock: print 'do something' ignore exceptions ----------------- :: from contextlib import contextmanager @contextmanager def ignored(*exceptions): try: yield except exceptions: pass with ignored(ValueError): int('string') assert raises ------------- This one is taken from Flask source:: from unittest import TestCase class MyTestCase(TestCase): def assert_raises(self, exc_type): return _ExceptionCatcher(self, exc_type) class _ExceptionCatcher(object): def __init__(self, test_case, exc_type): self.test_case = test_case self.exc_type = exc_type def __enter__(self): return self def __exit__(self, exc_type, exc_value, tb): exception_name = self.exc_type.__name__ if exc_type is None: self.test_case.fail('Expected exception of type %r' % exception_name) elif not issubclass(exc_type, self.exc_type): reraise(exc_type, exc_value, tb) return True class DictTestCase(MyTestCase): def test_empty_dict_access(self): d = {} with self.assert_raises(KeyError): d[42]