diff --git a/Lib/asyncio/test_utils.py b/Lib/asyncio/test_utils.py index e06ac06eee3..8170533188c 100644 --- a/Lib/asyncio/test_utils.py +++ b/Lib/asyncio/test_utils.py @@ -24,6 +24,7 @@ except ImportError: # pragma: no cover ssl = None from . import base_events +from . import compat from . import events from . import futures from . import selectors @@ -421,6 +422,16 @@ class TestCase(unittest.TestCase): # in an except block of a generator self.assertEqual(sys.exc_info(), (None, None, None)) + if not compat.PY34: + # Python 3.3 compatibility + def subTest(self, *args, **kwargs): + class EmptyCM: + def __enter__(self): + pass + def __exit__(self, *exc): + pass + return EmptyCM() + @contextlib.contextmanager def disable_logger(): diff --git a/Lib/test/test_asyncio/test_base_events.py b/Lib/test/test_asyncio/test_base_events.py index bedfe16c15c..072fe2f93e7 100644 --- a/Lib/test/test_asyncio/test_base_events.py +++ b/Lib/test/test_asyncio/test_base_events.py @@ -782,9 +782,10 @@ class BaseEventLoopTests(test_utils.TestCase): self.loop._selector.select.return_value = (event_sentinel,) for i in range(1, 3): - self.loop.call_soon(self.loop.stop) - self.loop.run_forever() - self.assertEqual(callcount, 1) + with self.subTest('Loop %d/2' % i): + self.loop.call_soon(self.loop.stop) + self.loop.run_forever() + self.assertEqual(callcount, 1) def test_run_once(self): # Simple test for test_utils.run_once(). It may seem strange