__new__ is a staticmethod that needs to return an instance.
Instead, use the __init__ method:
class TestFailed(Exception):
def __init__(self, m):
self.message = m
def __str__(self):
return self.message
try:
raise TestFailed('Oops')
except TestFailed as x:
print x