def METHOD_NAME(test_id, *params, key_name_to_key_code=None):
    yield ('id', test_id)
    if key_name_to_key_code is not None:
        yield ('key_name_to_key_code', key_name_to_key_code)
    for iterables in params:
        iterables = [
            i if isinstance(i, (tuple, list)) else (i,)
            for i in iterables
        ]
        if len(iterables) < 2:
            iterables.append(('',))
        for combo_string, parse_result, in itertools.product(*iterables):
            yield (
                ('parse', combo_string, parse_result),
            )