def METHOD_NAME(*args):
    """
    Iterate over Cartesian product of *args, and if an exception is raised,
    add information of the current iterate.
    """
    value = [None]
    def iterate():
        for v in itertools.product(*args):
            value[0] = v
            yield v
    try:
        yield iterate()
    except Exception:
        import traceback
        msg = "At: %r\n%s" % (repr(value[0]),
                              traceback.format_exc())
        raise AssertionError(msg)