Fixes issue 1959. Converted tests to unittest.
Thanks Giampaolo Rodola.
diff --git a/Lib/test/test_contains.py b/Lib/test/test_contains.py
index e6f5cf7..0d54099 100644
--- a/Lib/test/test_contains.py
+++ b/Lib/test/test_contains.py
@@ -1,133 +1,111 @@
-from test.test_support import TestFailed, have_unicode
+from test.test_support import have_unicode, run_unittest
+import unittest
+
 
 class base_set:
-
     def __init__(self, el):
         self.el = el
 
 class set(base_set):
-
     def __contains__(self, el):
         return self.el == el
 
 class seq(base_set):
-
     def __getitem__(self, n):
         return [self.el][n]
 
-def check(ok, *args):
-    if not ok:
-        raise TestFailed, " ".join(map(str, args))
 
-a = base_set(1)
-b = set(1)
-c = seq(1)
+class TestContains(unittest.TestCase):
+    def test_common_tests(self):
+        a = base_set(1)
+        b = set(1)
+        c = seq(1)
+        self.assert_(1 in b)
+        self.assert_(0 not in b)
+        self.assert_(1 in c)
+        self.assert_(0 not in c)
+        self.assertRaises(TypeError, lambda: 1 in a)
+        self.assertRaises(TypeError, lambda: 1 not in a)
 
-check(1 in b, "1 not in set(1)")
-check(0 not in b, "0 in set(1)")
-check(1 in c, "1 not in seq(1)")
-check(0 not in c, "0 in seq(1)")
+        # test char in string
+        self.assert_('c' in 'abc')
+        self.assert_('d' not in 'abc')
 
-try:
-    1 in a
-    check(0, "in base_set did not raise error")
-except TypeError:
-    pass
+        self.assert_('' in '')
+        self.assert_('' in 'abc')
 
-try:
-    1 not in a
-    check(0, "not in base_set did not raise error")
-except TypeError:
-    pass
+        self.assertRaises(TypeError, lambda: None in 'abc')
 
-# Test char in string
+    if have_unicode:
+        def test_char_in_unicode(self):
+            self.assert_('c' in unicode('abc'))
+            self.assert_('d' not in unicode('abc'))
 
-check('c' in 'abc', "'c' not in 'abc'")
-check('d' not in 'abc', "'d' in 'abc'")
+            self.assert_('' in unicode(''))
+            self.assert_(unicode('') in '')
+            self.assert_(unicode('') in unicode(''))
+            self.assert_('' in unicode('abc'))
+            self.assert_(unicode('') in 'abc')
+            self.assert_(unicode('') in unicode('abc'))
 
-check('' in '', "'' not in ''")
-check('' in 'abc', "'' not in 'abc'")
+            self.assertRaises(TypeError, lambda: None in unicode('abc'))
 
-try:
-    None in 'abc'
-    check(0, "None in 'abc' did not raise error")
-except TypeError:
-    pass
+            # test Unicode char in Unicode
+            self.assert_(unicode('c') in unicode('abc'))
+            self.assert_(unicode('d') not in unicode('abc'))
+
+            # test Unicode char in string
+            self.assert_(unicode('c') in 'abc')
+            self.assert_(unicode('d') not in 'abc')
+
+    def test_builtin_sequence_types(self):
+        # a collection of tests on builtin sequence types
+        a = range(10)
+        for i in a:
+            self.assert_(i in a)
+        self.assert_(16 not in a)
+        self.assert_(a not in a)
+
+        a = tuple(a)
+        for i in a:
+            self.assert_(i in a)
+        self.assert_(16 not in a)
+        self.assert_(a not in a)
+
+        class Deviant1:
+            """Behaves strangely when compared
+
+            This class is designed to make sure that the contains code
+            works when the list is modified during the check.
+            """
+            aList = range(15)
+            def __cmp__(self, other):
+                if other == 12:
+                    self.aList.remove(12)
+                    self.aList.remove(13)
+                    self.aList.remove(14)
+                return 1
+
+        self.assert_(Deviant1() not in Deviant1.aList)
+
+        class Deviant2:
+            """Behaves strangely when compared
+
+            This class raises an exception during comparison.  That in
+            turn causes the comparison to fail with a TypeError.
+            """
+            def __cmp__(self, other):
+                if other == 4:
+                    raise RuntimeError, "gotcha"
+
+        try:
+            self.assert_(Deviant2() not in a)
+        except TypeError:
+            pass
 
 
-if have_unicode:
+def test_main():
+    run_unittest(TestContains)
 
-    # Test char in Unicode
-
-    check('c' in unicode('abc'), "'c' not in u'abc'")
-    check('d' not in unicode('abc'), "'d' in u'abc'")
-
-    check('' in unicode(''), "'' not in u''")
-    check(unicode('') in '', "u'' not in ''")
-    check(unicode('') in unicode(''), "u'' not in u''")
-    check('' in unicode('abc'), "'' not in u'abc'")
-    check(unicode('') in 'abc', "u'' not in 'abc'")
-    check(unicode('') in unicode('abc'), "u'' not in u'abc'")
-
-    try:
-        None in unicode('abc')
-        check(0, "None in u'abc' did not raise error")
-    except TypeError:
-        pass
-
-    # Test Unicode char in Unicode
-
-    check(unicode('c') in unicode('abc'), "u'c' not in u'abc'")
-    check(unicode('d') not in unicode('abc'), "u'd' in u'abc'")
-
-    # Test Unicode char in string
-
-    check(unicode('c') in 'abc', "u'c' not in 'abc'")
-    check(unicode('d') not in 'abc', "u'd' in 'abc'")
-
-# A collection of tests on builtin sequence types
-a = range(10)
-for i in a:
-    check(i in a, "%r not in %r" % (i, a))
-check(16 not in a, "16 not in %r" % (a,))
-check(a not in a, "%s not in %r" % (a, a))
-
-a = tuple(a)
-for i in a:
-    check(i in a, "%r not in %r" % (i, a))
-check(16 not in a, "16 not in %r" % (a,))
-check(a not in a, "%r not in %r" % (a, a))
-
-class Deviant1:
-    """Behaves strangely when compared
-
-    This class is designed to make sure that the contains code
-    works when the list is modified during the check.
-    """
-
-    aList = range(15)
-
-    def __cmp__(self, other):
-        if other == 12:
-            self.aList.remove(12)
-            self.aList.remove(13)
-            self.aList.remove(14)
-        return 1
-
-check(Deviant1() not in Deviant1.aList, "Deviant1 failed")
-
-class Deviant2:
-    """Behaves strangely when compared
-
-    This class raises an exception during comparison.  That in
-    turn causes the comparison to fail with a TypeError.
-    """
-
-    def __cmp__(self, other):
-        if other == 4:
-            raise RuntimeError, "gotcha"
-
-try:
-    check(Deviant2() not in a, "oops")
-except TypeError:
-    pass
+if __name__ == '__main__':
+    test_main()