]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-46299: Improve test_descr (GH-30475)
authorDong-hee Na <donghee.na@python.org>
Sat, 8 Jan 2022 08:14:40 +0000 (17:14 +0900)
committerGitHub <noreply@github.com>
Sat, 8 Jan 2022 08:14:40 +0000 (17:14 +0900)
Lib/test/test_descr.py

index e8ecacb5c4d7614ee2002fa5661b5df530be722d..707c93140e2515545bd8ed6bd666294300e13b5e 100644 (file)
@@ -13,6 +13,7 @@ import warnings
 import weakref
 
 from copy import deepcopy
+from contextlib import redirect_stdout
 from test import support
 
 try:
@@ -1445,12 +1446,9 @@ order (MRO) for bases """
                 raise AttributeError
             return object.__setattr__(self, name, value)
         C.__setattr__ = mysetattr
-        try:
+        with self.assertRaises(AttributeError):
             a.spam = "not spam"
-        except AttributeError:
-            pass
-        else:
-            self.fail("expected AttributeError")
+
         self.assertEqual(a.spam, "spam")
         class D(C):
             pass
@@ -2431,12 +2429,8 @@ order (MRO) for bases """
             else:
                 self.fail("no TypeError from dict(%r)" % badarg)
 
-        try:
+        with self.assertRaises(TypeError):
             dict({}, {})
-        except TypeError:
-            pass
-        else:
-            self.fail("no TypeError from dict({}, {})")
 
         class Mapping:
             # Lacks a .keys() method; will be added later.
@@ -3589,12 +3583,8 @@ order (MRO) for bases """
             pass
 
         A.__call__ = A()
-        try:
+        with self.assertRaises(RecursionError):
             A()()
-        except RecursionError:
-            pass
-        else:
-            self.fail("Recursion limit should have been reached for __call__()")
 
     def test_delete_hook(self):
         # Testing __del__ hook...
@@ -4440,20 +4430,14 @@ order (MRO) for bases """
 
     def test_file_fault(self):
         # Testing sys.stdout is changed in getattr...
-        test_stdout = sys.stdout
         class StdoutGuard:
             def __getattr__(self, attr):
                 sys.stdout = sys.__stdout__
-                raise RuntimeError("Premature access to sys.stdout.%s" % attr)
-        sys.stdout = StdoutGuard()
-        try:
-            print("Oops!")
-        except RuntimeError:
-            pass
-        else:
-            self.fail("Didn't raise RuntimeError")
-        finally:
-            sys.stdout = test_stdout
+                raise RuntimeError(f"Premature access to sys.stdout.{attr}")
+
+        with redirect_stdout(StdoutGuard()):
+             with self.assertRaises(RuntimeError):
+                 print("Oops!")
 
     def test_vicious_descriptor_nonsense(self):
         # Testing vicious_descriptor_nonsense...