def METHOD_NAME(cls, test_case, file_pattern):
    """ search all test case files recursively of a path """
    if not os.path.exists(test_case):
        raise OSError(f'test case path "{test_case}" not exist')
    if os.path.isdir(test_case):
        test_case_files = []
        for root, _, file_names in os.walk(test_case):
            for filename in fnmatch.filter(file_names, file_pattern):
                test_case_files.append(os.path.join(root, filename))
    else:
        test_case_files = [test_case]
    return test_case_files