from __future__ import generator_stop import unittest class TestPEP479(unittest.TestCase): def test_stopiteration_wrapping(self): def f(): raise StopIteration def g(): yield f() with self.assertRaisesRegex(RuntimeError, "generator raised StopIteration"): next(g()) def test_stopiteration_wrapping_context(self): def f(): raise StopIteration def g(): yield f() try: next(g()) except RuntimeError as exc: self.assertIs(type(exc.__cause__), StopIteration) self.assertIs(type(exc.__context__), StopIteration) self.assertTrue(exc.__suppress_context__) else: self.fail('__cause__, __context__, or __suppress_context__ ' 'were not properly set') if __name__ == '__main__': unittest.main()