def G(): try: make_an_error except Exception: yield 'whatever' raise g = G() assert(g.next() == 'whatever') gotnameerror = False try: g.next() except NameError: gotnameerror = True assert(gotnameerror == True)